Update APIs, prepare for v11.3.0 (#554)

* chore: small tweak to how JSON API docs are serialized
diff --git a/config.yaml b/config.yaml
index c9d73d0..23b4851 100644
--- a/config.yaml
+++ b/config.yaml
@@ -2,7 +2,7 @@
 # should be ignored.
 packages:
 - googleapis:
-    version: 11.2.0
+    version: 11.3.0
     repository: https://github.com/google/googleapis.dart/tree/master/generated/googleapis
     readme: resources/README.md
     license: resources/LICENSE
@@ -50,6 +50,7 @@
     - bigtableadmin:v2 # https://cloud.google.com/bigtable/
     - billingbudgets:v1
     - binaryauthorization:v1
+    - blockchainnodeengine:v1
     - blogger:v3 # https://developers.google.com/blogger/
     - books:v1 # https://developers.google.com/books/
     - businessprofileperformance:v1
@@ -78,6 +79,7 @@
     - cloudscheduler:v1
     - cloudsearch:v1 # https://gsuite.google.com/products/cloud-search/
     - cloudshell:v1 # https://cloud.google.com/shell/docs/
+    - cloudsupport:v2
     - cloudtasks:v2
     - cloudtrace:v2 # https://cloud.google.com/cloud-trace/
     - composer:v1 # https://cloud.google.com/composer/
@@ -114,7 +116,6 @@
     - documentai:v1
     - domains:v1
     - domainsrdap:v1
-    - doubleclickbidmanager:v1.1
     - doubleclickbidmanager:v2
     - doubleclicksearch:v2 # https://developers.google.com/doubleclick-search/
     - drive:v2 # https://developers.google.com/drive/v2/reference/
@@ -174,7 +175,6 @@
     - 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
@@ -323,6 +323,7 @@
 - billingbudgets:v1beta1 # v1 included
 - binaryauthorization:v1beta1 # v1 included
 - blogger:v2 # v3 included
+- checks:v1alpha
 - cloudasset:v1beta1
 - cloudasset:v1p1beta1 # v1 included
 - cloudasset:v1p5beta1 # v1 included
@@ -370,7 +371,6 @@
 - firestore:v1beta1 # v1 included
 - firestore:v1beta2 # v1 included
 - gameservices:v1beta # v1 included
-- genomics:v2alpha1 # v1 included
 - gkehub:v1alpha
 - gkehub:v1alpha2
 - gkehub:v1beta
@@ -412,7 +412,6 @@
 - publicca:v1beta1
 - pubsub:v1beta1a # v1beta1, v1bets2 and v1 included
 - pubsub:v1beta2 # v1 included
-- realtimebidding:v1alpha
 - recommender:v1beta1 # v1 included
 - redis:v1beta1 # v1 included
 - retail:v2alpha # v2 included
diff --git a/discovery/googleapis/abusiveexperiencereport__v1.json b/discovery/googleapis/abusiveexperiencereport__v1.json
index 7cb4ffa..78d2249 100644
--- a/discovery/googleapis/abusiveexperiencereport__v1.json
+++ b/discovery/googleapis/abusiveexperiencereport__v1.json
@@ -15,6 +15,13 @@
     "name": "abusiveexperiencereport",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230508",
+    "rootUrl": "https://abusiveexperiencereport.googleapis.com/",
+    "servicePath": "",
+    "title": "Abusive Experience Report API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "sites": {
             "methods": {
@@ -137,8 +143,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://abusiveexperiencereport.googleapis.com/",
     "schemas": {
         "SiteSummaryResponse": {
             "description": "Response message for GetSiteSummary.",
@@ -215,9 +219,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Abusive Experience Report API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/acceleratedmobilepageurl__v1.json b/discovery/googleapis/acceleratedmobilepageurl__v1.json
index 2bb66f8..244dd4e 100644
--- a/discovery/googleapis/acceleratedmobilepageurl__v1.json
+++ b/discovery/googleapis/acceleratedmobilepageurl__v1.json
@@ -15,6 +15,13 @@
     "name": "acceleratedmobilepageurl",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230708",
+    "rootUrl": "https://acceleratedmobilepageurl.googleapis.com/",
+    "servicePath": "",
+    "title": "Accelerated Mobile Pages (AMP) URL API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "ampUrls": {
             "methods": {
@@ -114,8 +120,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://acceleratedmobilepageurl.googleapis.com/",
     "schemas": {
         "AmpUrl": {
             "description": "AMP URL response for a requested URL.",
@@ -218,9 +222,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Accelerated Mobile Pages (AMP) URL API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/accessapproval__v1.json b/discovery/googleapis/accessapproval__v1.json
index 67a2b29..e0b064c 100644
--- a/discovery/googleapis/accessapproval__v1.json
+++ b/discovery/googleapis/accessapproval__v1.json
@@ -24,6 +24,13 @@
     "name": "accessapproval",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230606",
+    "rootUrl": "https://accessapproval.googleapis.com/",
+    "servicePath": "",
+    "title": "Access Approval API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "folders": {
             "methods": {
@@ -911,8 +917,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://accessapproval.googleapis.com/",
     "schemas": {
         "AccessApprovalServiceAccount": {
             "description": "Access Approval service account related to a project/folder/organization.",
@@ -1220,9 +1224,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Access Approval API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/accesscontextmanager__v1.json b/discovery/googleapis/accesscontextmanager__v1.json
index a463798..5183f72 100644
--- a/discovery/googleapis/accesscontextmanager__v1.json
+++ b/discovery/googleapis/accesscontextmanager__v1.json
@@ -24,6 +24,13 @@
     "name": "accesscontextmanager",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230618",
+    "rootUrl": "https://accesscontextmanager.googleapis.com/",
+    "servicePath": "",
+    "title": "Access Context Manager API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "accessPolicies": {
             "methods": {
@@ -1233,8 +1239,6 @@
             }
         }
     },
-    "revision": "20230510",
-    "rootUrl": "https://accesscontextmanager.googleapis.com/",
     "schemas": {
         "AccessContextManagerOperationMetadata": {
             "description": "Metadata of Access Context Manager's Long Running Operations.",
@@ -2336,9 +2340,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Access Context Manager API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/acmedns__v1.json b/discovery/googleapis/acmedns__v1.json
index f7a320b..29f7f23 100644
--- a/discovery/googleapis/acmedns__v1.json
+++ b/discovery/googleapis/acmedns__v1.json
@@ -15,6 +15,13 @@
     "name": "acmedns",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230710",
+    "rootUrl": "https://acmedns.googleapis.com/",
+    "servicePath": "",
+    "title": "ACME DNS API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "acmeChallengeSets": {
             "methods": {
@@ -144,8 +150,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://acmedns.googleapis.com/",
     "schemas": {
         "AcmeChallengeSet": {
             "description": "The up-to-date ACME challenge set on a domain for an RPC. This contains all of the ACME TXT records that exist on the domain.",
@@ -212,9 +216,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "ACME DNS API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/adexperiencereport__v1.json b/discovery/googleapis/adexperiencereport__v1.json
index ad7a014..1105df1 100644
--- a/discovery/googleapis/adexperiencereport__v1.json
+++ b/discovery/googleapis/adexperiencereport__v1.json
@@ -15,6 +15,13 @@
     "name": "adexperiencereport",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230508",
+    "rootUrl": "https://adexperiencereport.googleapis.com/",
+    "servicePath": "",
+    "title": "Ad Experience Report API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "sites": {
             "methods": {
@@ -137,8 +143,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://adexperiencereport.googleapis.com/",
     "schemas": {
         "PlatformSummary": {
             "description": "A site's Ad Experience Report summary on a single platform.",
@@ -251,9 +255,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Ad Experience Report API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/admin__datatransfer_v1.json b/discovery/googleapis/admin__datatransfer_v1.json
index 49d33a9..2145ee7 100644
--- a/discovery/googleapis/admin__datatransfer_v1.json
+++ b/discovery/googleapis/admin__datatransfer_v1.json
@@ -28,6 +28,12 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "packagePath": "admin",
+    "protocol": "rest",
+    "revision": "20230704",
+    "rootUrl": "https://admin.googleapis.com/",
+    "servicePath": "",
+    "title": "Admin SDK API",
+    "version": "datatransfer_v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -105,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "applications": {
             "methods": {
@@ -270,8 +275,6 @@
             }
         }
     },
-    "revision": "20230516",
-    "rootUrl": "https://admin.googleapis.com/",
     "schemas": {
         "Application": {
             "description": "Application resources represent applications installed on the domain that support transferring ownership of user data.",
@@ -444,8 +447,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Admin SDK API",
-    "version": "datatransfer_v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/admin__directory_v1.json b/discovery/googleapis/admin__directory_v1.json
index 2876863..854bd3c 100644
--- a/discovery/googleapis/admin__directory_v1.json
+++ b/discovery/googleapis/admin__directory_v1.json
@@ -109,6 +109,12 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "packagePath": "admin",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://admin.googleapis.com/",
+    "servicePath": "",
+    "title": "Admin SDK API",
+    "version": "directory_v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -186,7 +192,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "asps": {
             "methods": {
@@ -3899,7 +3904,7 @@
                     ]
                 },
                 "insert": {
-                    "description": "Creates a user.",
+                    "description": "Creates a user. Mutate calls immediately following user creation might sometimes fail as the user isn't fully created due to propagation delay in our backends. Check the error details for the \"User creation is not complete\" message to see if this is the case. Retrying the calls after some time can help in this case.",
                     "flatPath": "admin/directory/v1/users",
                     "httpMethod": "POST",
                     "id": "directory.users.insert",
@@ -4633,8 +4638,6 @@
             }
         }
     },
-    "revision": "20230426",
-    "rootUrl": "https://admin.googleapis.com/",
     "schemas": {
         "Alias": {
             "description": "JSON template for Alias object in Directory API.",
@@ -6440,7 +6443,7 @@
             "id": "Member",
             "properties": {
                 "delivery_settings": {
-                    "description": "Defines mail delivery preferences of member. This is only supported by create/update/get.",
+                    "description": "Defines mail delivery preferences of member. This field is only supported by `insert`, `update`, and `get` methods.",
                     "type": "string"
                 },
                 "email": {
@@ -8371,8 +8374,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Admin SDK API",
-    "version": "directory_v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/admin__reports_v1.json b/discovery/googleapis/admin__reports_v1.json
index 9f42c89..8d0f385 100644
--- a/discovery/googleapis/admin__reports_v1.json
+++ b/discovery/googleapis/admin__reports_v1.json
@@ -28,6 +28,12 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "packagePath": "admin",
+    "protocol": "rest",
+    "revision": "20230704",
+    "rootUrl": "https://admin.googleapis.com/",
+    "servicePath": "",
+    "title": "Admin SDK API",
+    "version": "reports_v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -105,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "activities": {
             "methods": {
@@ -429,7 +434,7 @@
                             "type": "string"
                         },
                         "date": {
-                            "description": "Represents the date the usage occurred, based on PST time zone. The timestamp is in the [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601), `yyyy-mm-dd`.",
+                            "description": "Represents the date the usage occurred, based on UTC-8:00 (Pacific Standard Time). The timestamp is in the [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601), `yyyy-mm-dd`.",
                             "location": "path",
                             "pattern": "(\\d){4}-(\\d){2}-(\\d){2}",
                             "required": true,
@@ -477,7 +482,7 @@
                             "type": "string"
                         },
                         "date": {
-                            "description": "Represents the date the usage occurred. The timestamp is in the ISO 8601 format, yyyy-mm-dd. We recommend you use your account's time zone for this.",
+                            "description": "Represents the date the usage occurred, based on UTC-8:00 (Pacific Standard Time). The timestamp is in the [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601), `yyyy-mm-dd`.",
                             "location": "path",
                             "pattern": "(\\d){4}-(\\d){2}-(\\d){2}",
                             "required": true,
@@ -558,7 +563,7 @@
                             "type": "string"
                         },
                         "date": {
-                            "description": "Represents the date the usage occurred, based on GMT-7:00 (Pacific Standard Time). The timestamp is in the [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601), `yyyy-mm-dd`.",
+                            "description": "Represents the date the usage occurred, based on UTC-8:00 (Pacific Standard Time). The timestamp is in the [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601), `yyyy-mm-dd`.",
                             "location": "path",
                             "pattern": "(\\d){4}-(\\d){2}-(\\d){2}",
                             "required": true,
@@ -621,8 +626,6 @@
             }
         }
     },
-    "revision": "20230516",
-    "rootUrl": "https://admin.googleapis.com/",
     "schemas": {
         "Activities": {
             "description": "JSON template for a collection of activities.",
@@ -1067,8 +1070,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Admin SDK API",
-    "version": "reports_v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/admob__v1.json b/discovery/googleapis/admob__v1.json
index d7e9b9a..9bd0c45 100644
--- a/discovery/googleapis/admob__v1.json
+++ b/discovery/googleapis/admob__v1.json
@@ -27,6 +27,13 @@
     "name": "admob",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://admob.googleapis.com/",
+    "servicePath": "",
+    "title": "AdMob API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "accounts": {
             "methods": {
@@ -313,8 +319,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://admob.googleapis.com/",
     "schemas": {
         "AdUnit": {
             "description": "Describes an AdMob ad unit.",
@@ -1243,9 +1247,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "AdMob API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/adsense__v2.json b/discovery/googleapis/adsense__v2.json
index c1d1e84..a9767c3 100644
--- a/discovery/googleapis/adsense__v2.json
+++ b/discovery/googleapis/adsense__v2.json
@@ -26,6 +26,13 @@
     "name": "adsense",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230712",
+    "rootUrl": "https://adsense.googleapis.com/",
+    "servicePath": "",
+    "title": "AdSense Management API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -103,7 +110,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "accounts": {
             "methods": {
@@ -1060,7 +1066,11 @@
                                         "COST_PER_CLICK",
                                         "ADS_PER_IMPRESSION",
                                         "TOTAL_EARNINGS",
-                                        "WEBSEARCH_RESULT_PAGES"
+                                        "WEBSEARCH_RESULT_PAGES",
+                                        "FUNNEL_REQUESTS",
+                                        "FUNNEL_IMPRESSIONS",
+                                        "FUNNEL_CLICKS",
+                                        "FUNNEL_RPM"
                                     ],
                                     "enumDescriptions": [
                                         "Unspecified metric.",
@@ -1095,7 +1105,11 @@
                                         "Amount the publisher earns each time a user clicks on an ad. CPC is calculated by dividing the estimated revenue by the number of clicks received.",
                                         "Number of ad views per impression.",
                                         "Total earnings are the gross estimated earnings from revenue shared traffic before any parent and child account revenue share is applied.",
-                                        "Number of results pages."
+                                        "Number of results pages.",
+                                        "Number of requests for non-ad units (for example a related search unit). For more information, see [Funnel requests](https://support.google.com/adsense/answer/11586959).",
+                                        "Number of requests for non-ad units ads that returned content that was shown to the user. For more information, see [Funnel impressions](https://support.google.com/adsense/answer/11585767).",
+                                        "Number of times a user clicked on a non-ad unit, triggering further ad requests. For more information, see [Funnel clicks](https://support.google.com/adsense/answer/11586382).",
+                                        "Revenue per thousand funnel impressions. This is calculated by dividing estimated revenue by the number of funnel impressions multiplied by 1000. For more information, see [Funnel RPM](https://support.google.com/adsense/answer/11585979)."
                                     ],
                                     "location": "query",
                                     "repeated": true,
@@ -1372,7 +1386,11 @@
                                         "COST_PER_CLICK",
                                         "ADS_PER_IMPRESSION",
                                         "TOTAL_EARNINGS",
-                                        "WEBSEARCH_RESULT_PAGES"
+                                        "WEBSEARCH_RESULT_PAGES",
+                                        "FUNNEL_REQUESTS",
+                                        "FUNNEL_IMPRESSIONS",
+                                        "FUNNEL_CLICKS",
+                                        "FUNNEL_RPM"
                                     ],
                                     "enumDescriptions": [
                                         "Unspecified metric.",
@@ -1407,7 +1425,11 @@
                                         "Amount the publisher earns each time a user clicks on an ad. CPC is calculated by dividing the estimated revenue by the number of clicks received.",
                                         "Number of ad views per impression.",
                                         "Total earnings are the gross estimated earnings from revenue shared traffic before any parent and child account revenue share is applied.",
-                                        "Number of results pages."
+                                        "Number of results pages.",
+                                        "Number of requests for non-ad units (for example a related search unit). For more information, see [Funnel requests](https://support.google.com/adsense/answer/11586959).",
+                                        "Number of requests for non-ad units ads that returned content that was shown to the user. For more information, see [Funnel impressions](https://support.google.com/adsense/answer/11585767).",
+                                        "Number of times a user clicked on a non-ad unit, triggering further ad requests. For more information, see [Funnel clicks](https://support.google.com/adsense/answer/11586382).",
+                                        "Revenue per thousand funnel impressions. This is calculated by dividing estimated revenue by the number of funnel impressions multiplied by 1000. For more information, see [Funnel RPM](https://support.google.com/adsense/answer/11585979)."
                                     ],
                                     "location": "query",
                                     "repeated": true,
@@ -1827,8 +1849,6 @@
             }
         }
     },
-    "revision": "20230516",
-    "rootUrl": "https://adsense.googleapis.com/",
     "schemas": {
         "Account": {
             "description": "Representation of an account.",
@@ -1986,7 +2006,7 @@
                     "type": "string"
                 },
                 "state": {
-                    "description": "State of the ad unit.",
+                    "description": "Required. State of the ad unit.",
                     "enum": [
                         "STATE_UNSPECIFIED",
                         "ACTIVE",
@@ -2601,9 +2621,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "AdSense Management API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/adsensehost__v4.1.json b/discovery/googleapis/adsensehost__v4.1.json
index 37e84b8..eab9f59 100644
--- a/discovery/googleapis/adsensehost__v4.1.json
+++ b/discovery/googleapis/adsensehost__v4.1.json
@@ -27,6 +27,12 @@
     "name": "adsensehost",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20200930",
+    "rootUrl": "https://www.googleapis.com/",
+    "servicePath": "adsensehost/v4.1/",
+    "title": "AdSense Host API",
+    "version": "v4.1",
     "parameters": {
         "alt": {
             "default": "json",
@@ -74,7 +80,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "accounts": {
             "methods": {
@@ -1076,8 +1081,6 @@
             }
         }
     },
-    "revision": "20200930",
-    "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Account": {
             "id": "Account",
@@ -1566,8 +1569,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "adsensehost/v4.1/",
-    "title": "AdSense Host API",
-    "version": "v4.1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/advisorynotifications__v1.json b/discovery/googleapis/advisorynotifications__v1.json
index bd01f18..ac69e46 100644
--- a/discovery/googleapis/advisorynotifications__v1.json
+++ b/discovery/googleapis/advisorynotifications__v1.json
@@ -24,6 +24,13 @@
     "name": "advisorynotifications",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230708",
+    "rootUrl": "https://advisorynotifications.googleapis.com/",
+    "servicePath": "",
+    "title": "Advisory Notifications API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "organizations": {
             "resources": {
@@ -202,8 +208,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://advisorynotifications.googleapis.com/",
     "schemas": {
         "GoogleCloudAdvisorynotificationsV1Attachment": {
             "description": "Attachment with specific information about the issue.",
@@ -401,9 +405,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Advisory Notifications API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/analytics__v3.json b/discovery/googleapis/analytics__v3.json
index 23dda81..207e09a 100644
--- a/discovery/googleapis/analytics__v3.json
+++ b/discovery/googleapis/analytics__v3.json
@@ -42,6 +42,12 @@
     "name": "analytics",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20190807",
+    "rootUrl": "https://analytics.googleapis.com/",
+    "servicePath": "analytics/v3/",
+    "title": "Google Analytics API",
+    "version": "v3",
     "parameters": {
         "alt": {
             "default": "json",
@@ -87,7 +93,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "data": {
             "resources": {
@@ -3805,8 +3810,6 @@
             }
         }
     },
-    "revision": "20190807",
-    "rootUrl": "https://analytics.googleapis.com/",
     "schemas": {
         "Account": {
             "description": "JSON template for Analytics account entry.",
@@ -7452,8 +7455,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "analytics/v3/",
-    "title": "Google Analytics API",
-    "version": "v3"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/analyticshub__v1.json b/discovery/googleapis/analyticshub__v1.json
index 7256de3..e84ffcb 100644
--- a/discovery/googleapis/analyticshub__v1.json
+++ b/discovery/googleapis/analyticshub__v1.json
@@ -27,6 +27,13 @@
     "name": "analyticshub",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230703",
+    "rootUrl": "https://analyticshub.googleapis.com/",
+    "servicePath": "",
+    "title": "Analytics Hub API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "organizations": {
             "resources": {
@@ -693,8 +699,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://analyticshub.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.",
@@ -1079,6 +1083,10 @@
                     "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes.",
                     "type": "string"
                 },
+                "restrictedExportConfig": {
+                    "$ref": "RestrictedExportConfig",
+                    "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
+                },
                 "state": {
                     "description": "Output only. Current state of the listing.",
                     "enum": [
@@ -1185,6 +1193,26 @@
             },
             "type": "object"
         },
+        "RestrictedExportConfig": {
+            "description": "Restricted export config, used to configure restricted export on linked dataset.",
+            "id": "RestrictedExportConfig",
+            "properties": {
+                "enabled": {
+                    "description": "Optional. If true, enable restricted export.",
+                    "type": "boolean"
+                },
+                "restrictDirectTableAccess": {
+                    "description": "Output only. If true, restrict direct table access(read api/tabledata.list) on linked table.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "restrictQueryResult": {
+                    "description": "Optional. If true, restrict export of query result derived from restricted linked dataset table.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "SetIamPolicyRequest": {
             "description": "Request message for `SetIamPolicy` method.",
             "id": "SetIamPolicyRequest",
@@ -1246,9 +1274,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Analytics Hub API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/analyticsreporting__v4.json b/discovery/googleapis/analyticsreporting__v4.json
index 80ca220..34dcf2a 100644
--- a/discovery/googleapis/analyticsreporting__v4.json
+++ b/discovery/googleapis/analyticsreporting__v4.json
@@ -27,6 +27,13 @@
     "name": "analyticsreporting",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230626",
+    "rootUrl": "https://analyticsreporting.googleapis.com/",
+    "servicePath": "",
+    "title": "Analytics Reporting API",
+    "version": "v4",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "reports": {
             "methods": {
@@ -153,8 +159,6 @@
             }
         }
     },
-    "revision": "20230302",
-    "rootUrl": "https://analyticsreporting.googleapis.com/",
     "schemas": {
         "Activity": {
             "description": "An Activity represents data for an activity of a user. Note that an Activity is different from a hit. A hit might result in multiple Activity's. For example, if a hit includes a transaction and a goal completion, there will be two Activity protos for this hit, one for ECOMMERCE and one for GOAL. Conversely, multiple hits can also construct one Activity. In classic e-commerce, data for one transaction might be sent through multiple hits. These hits will be merged into one ECOMMERCE Activity.",
@@ -1673,9 +1677,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Analytics Reporting API",
-    "version": "v4",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/androiddeviceprovisioning__v1.json b/discovery/googleapis/androiddeviceprovisioning__v1.json
index 95749f2..1cd1eec 100644
--- a/discovery/googleapis/androiddeviceprovisioning__v1.json
+++ b/discovery/googleapis/androiddeviceprovisioning__v1.json
@@ -15,6 +15,13 @@
     "name": "androiddeviceprovisioning",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://androiddeviceprovisioning.googleapis.com/",
+    "servicePath": "",
+    "title": "Android Device Provisioning Partner API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "customers": {
             "methods": {
@@ -823,8 +829,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://androiddeviceprovisioning.googleapis.com/",
     "schemas": {
         "ClaimDeviceRequest": {
             "description": "Request message to claim a device on behalf of a customer.",
@@ -1907,9 +1911,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Android Device Provisioning Partner API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/androidenterprise__v1.json b/discovery/googleapis/androidenterprise__v1.json
index 7afe840..eef37d5 100644
--- a/discovery/googleapis/androidenterprise__v1.json
+++ b/discovery/googleapis/androidenterprise__v1.json
@@ -24,6 +24,12 @@
     "name": "androidenterprise",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230708",
+    "rootUrl": "https://androidenterprise.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Play EMM API",
+    "version": "v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "devices": {
             "methods": {
@@ -2648,8 +2653,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://androidenterprise.googleapis.com/",
     "schemas": {
         "Administrator": {
             "description": "This represents an enterprise admin who can manage the enterprise in the managed Google Play store.",
@@ -4931,8 +4934,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Google Play EMM API",
-    "version": "v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/androidmanagement__v1.json b/discovery/googleapis/androidmanagement__v1.json
index a273802..075161c 100644
--- a/discovery/googleapis/androidmanagement__v1.json
+++ b/discovery/googleapis/androidmanagement__v1.json
@@ -24,6 +24,13 @@
     "name": "androidmanagement",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230705",
+    "rootUrl": "https://androidmanagement.googleapis.com/",
+    "servicePath": "",
+    "title": "Android Management API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "enterprises": {
             "methods": {
@@ -1032,6 +1038,35 @@
                 }
             }
         },
+        "provisioningInfo": {
+            "methods": {
+                "get": {
+                    "description": "Get the device provisioning info by the identifier provided via the sign-in url.",
+                    "flatPath": "v1/provisioningInfo/{provisioningInfoId}",
+                    "httpMethod": "GET",
+                    "id": "androidmanagement.provisioningInfo.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The identifier that Android Device Policy passes to the 3P sign-in page in the form of provisioningInfo/{provisioning_info}.",
+                            "location": "path",
+                            "pattern": "^provisioningInfo/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "ProvisioningInfo"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/androidmanagement"
+                    ]
+                }
+            }
+        },
         "signupUrls": {
             "methods": {
                 "create": {
@@ -1063,8 +1098,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://androidmanagement.googleapis.com/",
     "schemas": {
         "AdbShellCommandEvent": {
             "description": "A shell command was issued over ADB via “adb shell command”.",
@@ -1501,7 +1534,7 @@
             "type": "object"
         },
         "ApplicationPolicy": {
-            "description": "Policy for an individual app.",
+            "description": "Policy for an individual app. Note: Application availability on a given device cannot be changed using this policy if installAppsDisabled is enabled.",
             "id": "ApplicationPolicy",
             "properties": {
                 "accessibleTrackIds": {
@@ -1750,6 +1783,20 @@
                     ],
                     "type": "string"
                 },
+                "userFacingType": {
+                    "description": "Whether the app is user facing.",
+                    "enum": [
+                        "USER_FACING_TYPE_UNSPECIFIED",
+                        "NOT_USER_FACING",
+                        "USER_FACING"
+                    ],
+                    "enumDescriptions": [
+                        "App user facing type is unspecified.",
+                        "App is not user facing.",
+                        "App is user facing."
+                    ],
+                    "type": "string"
+                },
                 "versionCode": {
                     "description": "The app version code, which can be used to determine whether one version is more recent than another.",
                     "format": "int32",
@@ -2474,8 +2521,40 @@
             "description": "Covers controls for device connectivity such as Wi-Fi, USB data access, keyboard/mouse connections, and more.",
             "id": "DeviceConnectivityManagement",
             "properties": {
+                "configureWifi": {
+                    "description": "Controls Wi-Fi configuring privileges. Based on the option set, user will have either full or limited or no control in configuring Wi-Fi networks.",
+                    "enum": [
+                        "CONFIGURE_WIFI_UNSPECIFIED",
+                        "ALLOW_CONFIGURING_WIFI",
+                        "DISALLOW_ADD_WIFI_CONFIG",
+                        "DISALLOW_CONFIGURING_WIFI"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to ALLOW_CONFIGURING_WIFI unless wifiConfigDisabled is set to true. If wifiConfigDisabled is set to true, this is equivalent to DISALLOW_CONFIGURING_WIFI.",
+                        "The user is allowed to configure Wi-Fi. wifiConfigDisabled is ignored.",
+                        "Adding new Wi-Fi configurations is disallowed. The user is only able to switch between already configured networks. Supported on Android 13 and above, on fully managed devices and work profiles on company-owned devices. If the setting is not supported, ALLOW_CONFIGURING_WIFI is set. A nonComplianceDetail with API_LEVEL is reported if the Android version is less than 13. wifiConfigDisabled is ignored.",
+                        "Disallows configuring Wi-Fi networks. The setting wifiConfigDisabled is ignored when this value is set. Supported on fully managed devices and work profile on company-owned devices, on all supported API levels. For fully managed devices, setting this removes all configured networks and retains only the networks configured using openNetworkConfiguration policy. For work profiles on company-owned devices, existing configured networks are not affected and the user is not allowed to add, remove, or modify Wi-Fi networks. Note: If a network connection can't be made at boot time and configuring Wi-Fi is disabled then network escape hatch will be shown in order to refresh the device policy (see networkEscapeHatchEnabled)."
+                    ],
+                    "type": "string"
+                },
+                "tetheringSettings": {
+                    "description": "Controls tethering settings. Based on the value set, the user is partially or fully disallowed from using different forms of tethering.",
+                    "enum": [
+                        "TETHERING_SETTINGS_UNSPECIFIED",
+                        "ALLOW_ALL_TETHERING",
+                        "DISALLOW_WIFI_TETHERING",
+                        "DISALLOW_ALL_TETHERING"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to ALLOW_ALL_TETHERING unless tetheringConfigDisabled is set to true. If tetheringConfigDisabled is set to true, this is equivalent to DISALLOW_ALL_TETHERING.",
+                        "Allows configuration and use of all forms of tethering. tetheringConfigDisabled is ignored.",
+                        "Disallows the user from using Wi-Fi tethering. Supported on company owned devices running Android 13 and above. If the setting is not supported, ALLOW_ALL_TETHERING will be set. A nonComplianceDetail with API_LEVEL is reported if the Android version is less than 13. tetheringConfigDisabled is ignored.",
+                        "Disallows all forms of tethering. Supported on fully managed devices and work profile on company-owned devices, on all supported android versions. The setting tetheringConfigDisabled is ignored."
+                    ],
+                    "type": "string"
+                },
                 "usbDataAccess": {
-                    "description": "Controls what can be transferred via USB, files and/or data. This is supported only on company-owned devices.",
+                    "description": "Controls what files and/or data can be transferred via USB. Supported only on company-owned devices.",
                     "enum": [
                         "USB_DATA_ACCESS_UNSPECIFIED",
                         "ALLOW_USB_DATA_TRANSFER",
@@ -2489,6 +2568,43 @@
                         "When set, all types of USB data transfers are prohibited. Supported for devices running Android 12 or above with USB HAL 1.3 or above. If the setting is not supported, DISALLOW_USB_FILE_TRANSFER will be set. A nonComplianceDetail with API_LEVEL is reported if the Android version is less than 12. A nonComplianceDetail with DEVICE_INCOMPATIBLE is reported if the device does not have USB HAL 1.3 or above. usbFileTransferDisabled is ignored."
                     ],
                     "type": "string"
+                },
+                "wifiDirectSettings": {
+                    "description": "Controls configuring and using Wi-Fi direct settings. Supported on company-owned devices running Android 13 and above.",
+                    "enum": [
+                        "WIFI_DIRECT_SETTINGS_UNSPECIFIED",
+                        "ALLOW_WIFI_DIRECT",
+                        "DISALLOW_WIFI_DIRECT"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to ALLOW_WIFI_DIRECT",
+                        "The user is allowed to use Wi-Fi direct.",
+                        "The user is not allowed to use Wi-Fi direct. A nonComplianceDetail with API_LEVEL is reported if the Android version is less than 13."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DeviceRadioState": {
+            "description": "Controls for device radio settings.",
+            "id": "DeviceRadioState",
+            "properties": {
+                "wifiState": {
+                    "description": "Controls current state of Wi-Fi and if user can change its state.",
+                    "enum": [
+                        "WIFI_STATE_UNSPECIFIED",
+                        "WIFI_STATE_USER_CHOICE",
+                        "WIFI_ENABLED",
+                        "WIFI_DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to WIFI_STATE_USER_CHOICE",
+                        "User is allowed to enable/disable Wi-Fi.",
+                        "Wi-Fi is on and the user is not allowed to turn it off. A nonComplianceDetail with API_LEVEL is reported if the Android version is less than 13.",
+                        "Wi-Fi is off and the user is not allowed to turn it on. A nonComplianceDetail with API_LEVEL is reported if the Android version is less than 13."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3669,7 +3785,8 @@
                         "PASSWORD_POLICIES_PASSWORD_EXPIRED",
                         "PASSWORD_POLICIES_PASSWORD_NOT_SUFFICIENT",
                         "ONC_WIFI_INVALID_VALUE",
-                        "ONC_WIFI_API_LEVEL"
+                        "ONC_WIFI_API_LEVEL",
+                        "ONC_WIFI_INVALID_ENTERPRISE_CONFIG"
                     ],
                     "enumDescriptions": [
                         "Specific non-compliance reason is not specified. Fields in specific_non_compliance_context are not set.",
@@ -3677,7 +3794,8 @@
                         "The device or profile password has expired. passwordPoliciesContext is set. nonComplianceReason is set to USER_ACTION.",
                         "The device password does not satisfy password requirements. passwordPoliciesContext is set. nonComplianceReason is set to USER_ACTION.",
                         "There is an incorrect value in ONC Wi-Fi configuration. fieldPath specifies which field value is incorrect. oncWifiContext is set. nonComplianceReason is set to INVALID_VALUE.",
-                        "The ONC Wi-Fi setting is not supported in the API level of the Android version running on the device. fieldPath specifies which field value is not supported. oncWifiContext is set. nonComplianceReason is set to API_LEVEL."
+                        "The ONC Wi-Fi setting is not supported in the API level of the Android version running on the device. fieldPath specifies which field value is not supported. oncWifiContext is set. nonComplianceReason is set to API_LEVEL.",
+                        "The enterprise Wi-Fi network is missing either the root CA or domain name. nonComplianceReason is set to INVALID_VALUE."
                     ],
                     "type": "string"
                 }
@@ -4341,6 +4459,10 @@
                     "$ref": "UserFacingMessage",
                     "description": "The device owner information to be shown on the lock screen."
                 },
+                "deviceRadioState": {
+                    "$ref": "DeviceRadioState",
+                    "description": "Covers controls for radio state such as Wi-Fi, bluetooth, and more."
+                },
                 "encryptionPolicy": {
                     "description": "Whether encryption is enabled",
                     "enum": [
@@ -4498,7 +4620,7 @@
                     "type": "string"
                 },
                 "networkEscapeHatchEnabled": {
-                    "description": "Whether the network escape hatch is enabled. If a network connection can't be made at boot time, the escape hatch prompts the user to temporarily connect to a network in order to refresh the device policy. After applying policy, the temporary network will be forgotten and the device will continue booting. This prevents being unable to connect to a network if there is no suitable network in the last policy and the device boots into an app in lock task mode, or the user is otherwise unable to reach device settings.Note: Setting wifiConfigDisabled to true will override this setting under specific circumstances. Please see wifiConfigDisabled for further details.",
+                    "description": "Whether the network escape hatch is enabled. If a network connection can't be made at boot time, the escape hatch prompts the user to temporarily connect to a network in order to refresh the device policy. After applying policy, the temporary network will be forgotten and the device will continue booting. This prevents being unable to connect to a network if there is no suitable network in the last policy and the device boots into an app in lock task mode, or the user is otherwise unable to reach device settings.Note: Setting wifiConfigDisabled to true will override this setting under specific circumstances. Please see wifiConfigDisabled for further details. Setting configureWifi to DISALLOW_CONFIGURING_WIFI will override this setting under specific circumstances. Please see DISALLOW_CONFIGURING_WIFI for further details.",
                     "type": "boolean"
                 },
                 "networkResetDisabled": {
@@ -4683,7 +4805,7 @@
                     "description": "The system update policy, which controls how OS updates are applied. If the update type is WINDOWED, the update window will automatically apply to Play app updates as well."
                 },
                 "tetheringConfigDisabled": {
-                    "description": "Whether configuring tethering and portable hotspots is disabled.",
+                    "description": "Whether configuring tethering and portable hotspots is disabled. If tetheringSettings is set to anything other than TETHERING_SETTINGS_UNSPECIFIED, this setting is ignored.",
                     "type": "boolean"
                 },
                 "uninstallAppsDisabled": {
@@ -4716,7 +4838,7 @@
                     "type": "boolean"
                 },
                 "wifiConfigDisabled": {
-                    "description": "Whether configuring Wi-Fi networks is disabled. Supported on fully managed devices and work profiles on company-owned devices. For fully managed devices, setting this to true removes all configured networks and retains only the networks configured using openNetworkConfiguration. For work profiles on company-owned devices, existing configured networks are not affected and the user is not allowed to add, remove, or modify Wi-Fi networks. Note: If a network connection can't be made at boot time and configuring Wi-Fi is disabled then network escape hatch will be shown in order to refresh the device policy (see networkEscapeHatchEnabled).",
+                    "description": "Whether configuring Wi-Fi networks is disabled. Supported on fully managed devices and work profiles on company-owned devices. For fully managed devices, setting this to true removes all configured networks and retains only the networks configured using openNetworkConfiguration. For work profiles on company-owned devices, existing configured networks are not affected and the user is not allowed to add, remove, or modify Wi-Fi networks. If configureWifi is set to anything other than CONFIGURE_WIFI_UNSPECIFIED, this setting is ignored. Note: If a network connection can't be made at boot time and configuring Wi-Fi is disabled then network escape hatch will be shown in order to refresh the device policy (see networkEscapeHatchEnabled).",
                     "type": "boolean"
                 },
                 "wifiConfigsLockdownEnabled": {
@@ -4727,7 +4849,7 @@
             "type": "object"
         },
         "PolicyEnforcementRule": {
-            "description": "A rule that defines the actions to take if a device or work profile is not compliant with the policy specified in settingName.",
+            "description": "A rule that defines the actions to take if a device or work profile is not compliant with the policy specified in settingName. In the case of multiple matching or multiple triggered enforcement rules, a merge will occur with the most severe action being taken. However, all triggered rules are still kept track of: this includes initial trigger time and all associated non-compliance details. In the situation where the most severe enforcement rule is satisfied, the next most appropriate action is applied.",
             "id": "PolicyEnforcementRule",
             "properties": {
                 "blockAction": {
@@ -4816,6 +4938,66 @@
             },
             "type": "object"
         },
+        "ProvisioningInfo": {
+            "description": "Information about a device that is available during setup.",
+            "id": "ProvisioningInfo",
+            "properties": {
+                "apiLevel": {
+                    "description": "The API level of the Android platform version running on the device.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "authenticatedUserEmail": {
+                    "description": "The email address of the authenticated user (only present for Google Account provisioning method).",
+                    "type": "string"
+                },
+                "brand": {
+                    "description": "Brand of the device. For example, Google.",
+                    "type": "string"
+                },
+                "enterprise": {
+                    "description": "The name of the enterprise in the form enterprises/{enterprise}.",
+                    "type": "string"
+                },
+                "managementMode": {
+                    "description": "The management mode of the device or profile.",
+                    "enum": [
+                        "MANAGEMENT_MODE_UNSPECIFIED",
+                        "DEVICE_OWNER",
+                        "PROFILE_OWNER"
+                    ],
+                    "enumDescriptions": [
+                        "This value is disallowed.",
+                        "Device owner. Android Device Policy has full control over the device.",
+                        "Profile owner. Android Device Policy has control over a managed profile on the device."
+                    ],
+                    "type": "string"
+                },
+                "model": {
+                    "description": "The model of the device. For example, Asus Nexus 7.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of this resource in the form provisioningInfo/{provisioning_info}.",
+                    "type": "string"
+                },
+                "ownership": {
+                    "description": "Ownership of the managed device.",
+                    "enum": [
+                        "OWNERSHIP_UNSPECIFIED",
+                        "COMPANY_OWNED",
+                        "PERSONALLY_OWNED"
+                    ],
+                    "enumDescriptions": [
+                        "Ownership is unspecified.",
+                        "Device is company-owned.",
+                        "Device is personally-owned."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ProxyInfo": {
             "description": "Configuration info for an HTTP proxy. For a direct proxy, set the host, port, and excluded_hosts fields. For a PAC script proxy, set the pac_uri field.",
             "id": "ProxyInfo",
@@ -5605,9 +5787,5 @@
             "properties": {},
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Android Management API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/androidpublisher__v3.json b/discovery/googleapis/androidpublisher__v3.json
index 2aac4da..2c54ff5 100644
--- a/discovery/googleapis/androidpublisher__v3.json
+++ b/discovery/googleapis/androidpublisher__v3.json
@@ -24,6 +24,12 @@
     "name": "androidpublisher",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230712",
+    "rootUrl": "https://androidpublisher.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Play Android Developer API",
+    "version": "v3",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "applications": {
             "resources": {
@@ -631,7 +636,7 @@
                                 "accept": [
                                     "application/octet-stream"
                                 ],
-                                "maxSize": "838860800",
+                                "maxSize": "1258291200",
                                 "protocols": {
                                     "resumable": {
                                         "multipart": true,
@@ -2098,7 +2103,7 @@
         "inappproducts": {
             "methods": {
                 "delete": {
-                    "description": "Deletes an in-app product (i.e. a managed product or a subscription).",
+                    "description": "Deletes an in-app product (i.e. a managed product or a subscription). This method should no longer be used to delete subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information.",
                     "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}",
                     "httpMethod": "DELETE",
                     "id": "androidpublisher.inappproducts.delete",
@@ -2126,7 +2131,7 @@
                     ]
                 },
                 "get": {
-                    "description": "Gets an in-app product, which can be a managed product or a subscription.",
+                    "description": "Gets an in-app product, which can be a managed product or a subscription. This method should no longer be used to retrieve subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information.",
                     "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}",
                     "httpMethod": "GET",
                     "id": "androidpublisher.inappproducts.get",
@@ -2157,7 +2162,7 @@
                     ]
                 },
                 "insert": {
-                    "description": "Creates an in-app product (i.e. a managed product or a subscription).",
+                    "description": "Creates an in-app product (i.e. a managed product or a subscription). This method should no longer be used to create subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information.",
                     "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts",
                     "httpMethod": "POST",
                     "id": "androidpublisher.inappproducts.insert",
@@ -2189,7 +2194,7 @@
                     ]
                 },
                 "list": {
-                    "description": "Lists all in-app products - both managed products and subscriptions. If an app has a large number of in-app products, the response may be paginated. In this case the response field `tokenPagination.nextPageToken` will be set and the caller should provide its value as a `token` request parameter to retrieve the next page.",
+                    "description": "Lists all in-app products - both managed products and subscriptions. If an app has a large number of in-app products, the response may be paginated. In this case the response field `tokenPagination.nextPageToken` will be set and the caller should provide its value as a `token` request parameter to retrieve the next page. This method should no longer be used to retrieve subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information.",
                     "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts",
                     "httpMethod": "GET",
                     "id": "androidpublisher.inappproducts.list",
@@ -2230,7 +2235,7 @@
                     ]
                 },
                 "patch": {
-                    "description": "Patches an in-app product (i.e. a managed product or a subscription).",
+                    "description": "Patches an in-app product (i.e. a managed product or a subscription). This method should no longer be used to update subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information.",
                     "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}",
                     "httpMethod": "PATCH",
                     "id": "androidpublisher.inappproducts.patch",
@@ -2269,7 +2274,7 @@
                     ]
                 },
                 "update": {
-                    "description": "Updates an in-app product (i.e. a managed product or a subscription).",
+                    "description": "Updates an in-app product (i.e. a managed product or a subscription). This method should no longer be used to update subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information.",
                     "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}",
                     "httpMethod": "PUT",
                     "id": "androidpublisher.inappproducts.update",
@@ -4044,9 +4049,55 @@
             }
         }
     },
-    "revision": "20230516",
-    "rootUrl": "https://androidpublisher.googleapis.com/",
     "schemas": {
+        "Abi": {
+            "description": "Represents an Abi.",
+            "id": "Abi",
+            "properties": {
+                "alias": {
+                    "description": "Alias for an abi.",
+                    "enum": [
+                        "UNSPECIFIED_CPU_ARCHITECTURE",
+                        "ARMEABI",
+                        "ARMEABI_V7A",
+                        "ARM64_V8A",
+                        "X86",
+                        "X86_64"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified abi.",
+                        "ARMEABI abi.",
+                        "ARMEABI_V7A abi.",
+                        "ARM64_V8A abi.",
+                        "X86 abi.",
+                        "X86_64 abi."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AbiTargeting": {
+            "description": "Targeting based on Abi.",
+            "id": "AbiTargeting",
+            "properties": {
+                "alternatives": {
+                    "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.",
+                    "items": {
+                        "$ref": "Abi"
+                    },
+                    "type": "array"
+                },
+                "value": {
+                    "description": "Value of an abi.",
+                    "items": {
+                        "$ref": "Abi"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "AcquisitionTargetingRule": {
             "description": "Represents a targeting rule of the form: User never had {scope} before.",
             "id": "AcquisitionTargetingRule",
@@ -4101,6 +4152,86 @@
             },
             "type": "object"
         },
+        "ApkDescription": {
+            "description": "Description of the created apks.",
+            "id": "ApkDescription",
+            "properties": {
+                "assetSliceMetadata": {
+                    "$ref": "SplitApkMetadata",
+                    "description": "Set only for asset slices."
+                },
+                "instantApkMetadata": {
+                    "$ref": "SplitApkMetadata",
+                    "description": "Set only for Instant split APKs."
+                },
+                "path": {
+                    "description": "Path of the Apk, will be in the following format: .apk where DownloadId is the ID used to download the apk using GeneratedApks.Download API.",
+                    "type": "string"
+                },
+                "splitApkMetadata": {
+                    "$ref": "SplitApkMetadata",
+                    "description": "Set only for Split APKs."
+                },
+                "standaloneApkMetadata": {
+                    "$ref": "StandaloneApkMetadata",
+                    "description": "Set only for standalone APKs."
+                },
+                "targeting": {
+                    "$ref": "ApkTargeting",
+                    "description": "Apk-level targeting."
+                }
+            },
+            "type": "object"
+        },
+        "ApkSet": {
+            "description": "A set of apks representing a module.",
+            "id": "ApkSet",
+            "properties": {
+                "apkDescription": {
+                    "description": "Description of the generated apks.",
+                    "items": {
+                        "$ref": "ApkDescription"
+                    },
+                    "type": "array"
+                },
+                "moduleMetadata": {
+                    "$ref": "ModuleMetadata",
+                    "description": "Metadata about the module represented by this ApkSet"
+                }
+            },
+            "type": "object"
+        },
+        "ApkTargeting": {
+            "description": "Represents a set of apk-level targetings.",
+            "id": "ApkTargeting",
+            "properties": {
+                "abiTargeting": {
+                    "$ref": "AbiTargeting",
+                    "description": "The abi that the apk targets"
+                },
+                "languageTargeting": {
+                    "$ref": "LanguageTargeting",
+                    "description": "The language that the apk targets"
+                },
+                "multiAbiTargeting": {
+                    "$ref": "MultiAbiTargeting",
+                    "description": "Multi-api-level targeting."
+                },
+                "screenDensityTargeting": {
+                    "$ref": "ScreenDensityTargeting",
+                    "description": "The screen density that this apk supports."
+                },
+                "sdkVersionTargeting": {
+                    "$ref": "SdkVersionTargeting",
+                    "description": "The sdk version that the apk targets"
+                },
+                "textureCompressionFormatTargeting": {
+                    "$ref": "TextureCompressionFormatTargeting",
+                    "description": "Texture-compression-format-level targeting"
+                }
+            },
+            "type": "object"
+        },
         "ApksAddExternallyHostedRequest": {
             "description": "Request to create a new externally hosted APK.",
             "id": "ApksAddExternallyHostedRequest",
@@ -4187,6 +4318,51 @@
             "properties": {},
             "type": "object"
         },
+        "AssetModuleMetadata": {
+            "description": "Metadata of an asset module.",
+            "id": "AssetModuleMetadata",
+            "properties": {
+                "deliveryType": {
+                    "description": "Indicates the delivery type for persistent install.",
+                    "enum": [
+                        "UNKNOWN_DELIVERY_TYPE",
+                        "INSTALL_TIME",
+                        "ON_DEMAND",
+                        "FAST_FOLLOW"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified delivery type.",
+                        "This module will always be downloaded as part of the initial install of the app.",
+                        "This module is requested on-demand, which means it will not be part of the initial install, and will only be sent when requested by the client.",
+                        "This module will be downloaded immediately after initial install finishes. The app can be opened before these modules are downloaded."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Module name.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AssetSliceSet": {
+            "description": "Set of asset slices belonging to a single asset module.",
+            "id": "AssetSliceSet",
+            "properties": {
+                "apkDescription": {
+                    "description": "Asset slices.",
+                    "items": {
+                        "$ref": "ApkDescription"
+                    },
+                    "type": "array"
+                },
+                "assetModuleMetadata": {
+                    "$ref": "AssetModuleMetadata",
+                    "description": "Module level metadata."
+                }
+            },
+            "type": "object"
+        },
         "AutoRenewingBasePlanType": {
             "description": "Represents a base plan that automatically renews at the end of its subscription period.",
             "id": "AutoRenewingBasePlanType",
@@ -4507,6 +4683,17 @@
             "properties": {},
             "type": "object"
         },
+        "DeferredItemReplacement": {
+            "description": "Information related to deferred item replacement.",
+            "id": "DeferredItemReplacement",
+            "properties": {
+                "productId": {
+                    "description": "The product_id going to replace the existing product_id.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DeobfuscationFile": {
             "description": "Represents a deobfuscation file.",
             "id": "DeobfuscationFile",
@@ -4560,6 +4747,33 @@
             "properties": {},
             "type": "object"
         },
+        "DeviceFeature": {
+            "description": "Represents a device feature.",
+            "id": "DeviceFeature",
+            "properties": {
+                "featureName": {
+                    "description": "Name of the feature.",
+                    "type": "string"
+                },
+                "featureVersion": {
+                    "description": "The feature version specified by android:glEsVersion or android:version in in the AndroidManifest.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "DeviceFeatureTargeting": {
+            "description": "Targeting for a device feature.",
+            "id": "DeviceFeatureTargeting",
+            "properties": {
+                "requiredFeature": {
+                    "$ref": "DeviceFeature",
+                    "description": "Feature of the device."
+                }
+            },
+            "type": "object"
+        },
         "DeviceGroup": {
             "description": "A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).",
             "id": "DeviceGroup",
@@ -5093,6 +5307,10 @@
                 "generatedUniversalApk": {
                     "$ref": "GeneratedUniversalApk",
                     "description": "Generated universal APK, signed with a key corresponding to certificate_sha256_hash. This field is not set if no universal APK was generated for this signing key."
+                },
+                "targetingInfo": {
+                    "$ref": "TargetingInfo",
+                    "description": "Contains targeting information about the generated apks."
                 }
             },
             "type": "object"
@@ -5191,11 +5409,13 @@
                             "CAN_MANAGE_PUBLIC_LISTING",
                             "CAN_MANAGE_DRAFT_APPS",
                             "CAN_MANAGE_ORDERS",
-                            "CAN_MANAGE_APP_CONTENT"
+                            "CAN_MANAGE_APP_CONTENT",
+                            "CAN_VIEW_NON_FINANCIAL_DATA",
+                            "CAN_VIEW_APP_QUALITY"
                         ],
                         "enumDescriptions": [
                             "Unknown or unspecified permission.",
-                            "View app information (read-only).",
+                            "View app information (read-only). Deprecated: Try defining a more granular capability. Otherwise, check AppLevelPermission.CAN_VIEW_NON_FINANCIAL_DATA.",
                             "View financial data.",
                             "Admin (all permissions).",
                             "Reply to reviews.",
@@ -5205,7 +5425,9 @@
                             "Manage store presence.",
                             "Edit and delete draft apps.",
                             "Manage orders and subscriptions.",
-                            "Manage policy related pages."
+                            "Manage policy related pages.",
+                            "View app information (read-only).",
+                            "View app quality data such as Vitals, Crashes etc."
                         ],
                         "type": "string"
                     },
@@ -5461,6 +5683,27 @@
             },
             "type": "object"
         },
+        "LanguageTargeting": {
+            "description": "Targeting based on language.",
+            "id": "LanguageTargeting",
+            "properties": {
+                "alternatives": {
+                    "description": "Alternative languages.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "value": {
+                    "description": "ISO-639: 2 or 3 letter language code.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ListDeviceTierConfigsResponse": {
             "description": "Response listing existing device tier configs.",
             "id": "ListDeviceTierConfigsResponse",
@@ -5645,6 +5888,78 @@
             "properties": {},
             "type": "object"
         },
+        "ModuleMetadata": {
+            "description": "Metadata of a module.",
+            "id": "ModuleMetadata",
+            "properties": {
+                "deliveryType": {
+                    "description": "Indicates the delivery type (e.g. on-demand) of the module.",
+                    "enum": [
+                        "UNKNOWN_DELIVERY_TYPE",
+                        "INSTALL_TIME",
+                        "ON_DEMAND",
+                        "FAST_FOLLOW"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified delivery type.",
+                        "This module will always be downloaded as part of the initial install of the app.",
+                        "This module is requested on-demand, which means it will not be part of the initial install, and will only be sent when requested by the client.",
+                        "This module will be downloaded immediately after initial install finishes. The app can be opened before these modules are downloaded."
+                    ],
+                    "type": "string"
+                },
+                "dependencies": {
+                    "description": "Names of the modules that this module directly depends on. Each module implicitly depends on the base module.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "moduleType": {
+                    "description": "Indicates the type of this feature module.",
+                    "enum": [
+                        "UNKNOWN_MODULE_TYPE",
+                        "FEATURE_MODULE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown feature module.",
+                        "Regular feature module."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Module name.",
+                    "type": "string"
+                },
+                "targeting": {
+                    "$ref": "ModuleTargeting",
+                    "description": "The targeting that makes a conditional module installed. Relevant only for Split APKs."
+                }
+            },
+            "type": "object"
+        },
+        "ModuleTargeting": {
+            "description": "Targeting on the module level.",
+            "id": "ModuleTargeting",
+            "properties": {
+                "deviceFeatureTargeting": {
+                    "description": "Targeting for device features.",
+                    "items": {
+                        "$ref": "DeviceFeatureTargeting"
+                    },
+                    "type": "array"
+                },
+                "sdkVersionTargeting": {
+                    "$ref": "SdkVersionTargeting",
+                    "description": "The sdk version that the variant targets"
+                },
+                "userCountriesTargeting": {
+                    "$ref": "UserCountriesTargeting",
+                    "description": "Countries-level targeting"
+                }
+            },
+            "type": "object"
+        },
         "Money": {
             "description": "Represents an amount of money with its currency type.",
             "id": "Money",
@@ -5666,6 +5981,41 @@
             },
             "type": "object"
         },
+        "MultiAbi": {
+            "description": "Represents a list of apis.",
+            "id": "MultiAbi",
+            "properties": {
+                "abi": {
+                    "description": "A list of targeted ABIs, as represented by the Android Platform",
+                    "items": {
+                        "$ref": "Abi"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "MultiAbiTargeting": {
+            "description": "Targeting based on multiple abis.",
+            "id": "MultiAbiTargeting",
+            "properties": {
+                "alternatives": {
+                    "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.",
+                    "items": {
+                        "$ref": "MultiAbi"
+                    },
+                    "type": "array"
+                },
+                "value": {
+                    "description": "Value of a multi abi.",
+                    "items": {
+                        "$ref": "MultiAbi"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "OfferDetails": {
             "description": "Offer details information related to a purchase line item.",
             "id": "OfferDetails",
@@ -6220,6 +6570,150 @@
             },
             "type": "object"
         },
+        "ScreenDensity": {
+            "description": "Represents a screen density.",
+            "id": "ScreenDensity",
+            "properties": {
+                "densityAlias": {
+                    "description": "Alias for a screen density.",
+                    "enum": [
+                        "DENSITY_UNSPECIFIED",
+                        "NODPI",
+                        "LDPI",
+                        "MDPI",
+                        "TVDPI",
+                        "HDPI",
+                        "XHDPI",
+                        "XXHDPI",
+                        "XXXHDPI"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified screen density.",
+                        "NODPI screen density.",
+                        "LDPI screen density.",
+                        "MDPI screen density.",
+                        "TVDPI screen density.",
+                        "HDPI screen density.",
+                        "XHDPI screen density.",
+                        "XXHDPI screen density.",
+                        "XXXHDPI screen density."
+                    ],
+                    "type": "string"
+                },
+                "densityDpi": {
+                    "description": "Value for density dpi.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ScreenDensityTargeting": {
+            "description": "Targeting based on screen density.",
+            "id": "ScreenDensityTargeting",
+            "properties": {
+                "alternatives": {
+                    "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.",
+                    "items": {
+                        "$ref": "ScreenDensity"
+                    },
+                    "type": "array"
+                },
+                "value": {
+                    "description": "Value of a screen density.",
+                    "items": {
+                        "$ref": "ScreenDensity"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SdkVersion": {
+            "description": "Represents an sdk version.",
+            "id": "SdkVersion",
+            "properties": {
+                "min": {
+                    "description": "Inclusive minimum value of an sdk version.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "SdkVersionTargeting": {
+            "description": "Targeting based on sdk version.",
+            "id": "SdkVersionTargeting",
+            "properties": {
+                "alternatives": {
+                    "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.",
+                    "items": {
+                        "$ref": "SdkVersion"
+                    },
+                    "type": "array"
+                },
+                "value": {
+                    "description": "Value of an sdk version.",
+                    "items": {
+                        "$ref": "SdkVersion"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SplitApkMetadata": {
+            "description": "Holds data specific to Split APKs.",
+            "id": "SplitApkMetadata",
+            "properties": {
+                "isMasterSplit": {
+                    "description": "Indicates whether this APK is the main split of the module.",
+                    "type": "boolean"
+                },
+                "splitId": {
+                    "description": "Id of the split.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SplitApkVariant": {
+            "description": "Variant is a group of APKs that covers a part of the device configuration space. APKs from multiple variants are never combined on one device.",
+            "id": "SplitApkVariant",
+            "properties": {
+                "apkSet": {
+                    "description": "Set of APKs, one set per module.",
+                    "items": {
+                        "$ref": "ApkSet"
+                    },
+                    "type": "array"
+                },
+                "targeting": {
+                    "$ref": "VariantTargeting",
+                    "description": "Variant-level targeting."
+                },
+                "variantNumber": {
+                    "description": "Number of the variant, starting at 0 (unless overridden). A device will receive APKs from the first variant that matches the device configuration, with higher variant numbers having priority over lower variant numbers.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "StandaloneApkMetadata": {
+            "description": "Holds data specific to Standalone APKs.",
+            "id": "StandaloneApkMetadata",
+            "properties": {
+                "fusedModuleName": {
+                    "description": "Names of the modules fused in this standalone APK.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "SubscribeWithGoogleInfo": {
             "description": "Information associated with purchases made with 'Subscribe with Google'.",
             "id": "SubscribeWithGoogleInfo",
@@ -6658,6 +7152,10 @@
                     "$ref": "AutoRenewingPlan",
                     "description": "The item is auto renewing."
                 },
+                "deferredItemReplacement": {
+                    "$ref": "DeferredItemReplacement",
+                    "description": "Information for deferred item replacement."
+                },
                 "expiryTime": {
                     "description": "Time at which the subscription expired or will expire unless the access is extended (ex. renews).",
                     "format": "google-datetime",
@@ -6864,6 +7362,31 @@
             "properties": {},
             "type": "object"
         },
+        "TargetingInfo": {
+            "description": "Targeting information about the generated apks.",
+            "id": "TargetingInfo",
+            "properties": {
+                "assetSliceSet": {
+                    "description": "List of created asset slices.",
+                    "items": {
+                        "$ref": "AssetSliceSet"
+                    },
+                    "type": "array"
+                },
+                "packageName": {
+                    "description": "The package name of this app.",
+                    "type": "string"
+                },
+                "variant": {
+                    "description": "List of the created variants.",
+                    "items": {
+                        "$ref": "SplitApkVariant"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "TargetingRuleScope": {
             "description": "Defines the scope of subscriptions which a targeting rule can match to target offers to users based on past or current entitlement.",
             "id": "TargetingRuleScope",
@@ -6895,6 +7418,64 @@
             },
             "type": "object"
         },
+        "TextureCompressionFormat": {
+            "description": "Represents texture compression format.",
+            "id": "TextureCompressionFormat",
+            "properties": {
+                "alias": {
+                    "description": "Alias for texture compression format.",
+                    "enum": [
+                        "UNSPECIFIED_TEXTURE_COMPRESSION_FORMAT",
+                        "ETC1_RGB8",
+                        "PALETTED",
+                        "THREE_DC",
+                        "ATC",
+                        "LATC",
+                        "DXT1",
+                        "S3TC",
+                        "PVRTC",
+                        "ASTC",
+                        "ETC2"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified format.",
+                        "ETC1_RGB8 format.",
+                        "PALETTED format.",
+                        "THREE_DC format.",
+                        "ATC format.",
+                        "LATC format.",
+                        "DXT1 format.",
+                        "S3TC format.",
+                        "PVRTC format.",
+                        "ASTC format.",
+                        "ETC2 format."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TextureCompressionFormatTargeting": {
+            "description": "Targeting by a texture compression format.",
+            "id": "TextureCompressionFormatTargeting",
+            "properties": {
+                "alternatives": {
+                    "description": "List of alternative TCFs (TCFs targeted by the sibling splits).",
+                    "items": {
+                        "$ref": "TextureCompressionFormat"
+                    },
+                    "type": "array"
+                },
+                "value": {
+                    "description": "The list of targeted TCFs. Should not be empty.",
+                    "items": {
+                        "$ref": "TextureCompressionFormat"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "Timestamp": {
             "description": "A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970.",
             "id": "Timestamp",
@@ -7114,7 +7695,9 @@
                             "CAN_CREATE_MANAGED_PLAY_APPS_GLOBAL",
                             "CAN_CHANGE_MANAGED_PLAY_SETTING_GLOBAL",
                             "CAN_MANAGE_ORDERS_GLOBAL",
-                            "CAN_MANAGE_APP_CONTENT_GLOBAL"
+                            "CAN_MANAGE_APP_CONTENT_GLOBAL",
+                            "CAN_VIEW_NON_FINANCIAL_DATA_GLOBAL",
+                            "CAN_VIEW_APP_QUALITY_GLOBAL"
                         ],
                         "enumDescriptions": [
                             "Unknown or unspecified permission.",
@@ -7132,7 +7715,9 @@
                             "Create and publish private apps to your organization.",
                             "Choose whether apps are public, or only available to your organization.",
                             "Manage orders and subscriptions.",
-                            "Manage policy related pages on all apps for the developer."
+                            "Manage policy related pages on all apps for the developer.",
+                            "View app information and download bulk reports (read-only).",
+                            "View app quality information for all apps for the developer."
                         ],
                         "type": "string"
                     },
@@ -7227,6 +7812,24 @@
             },
             "type": "object"
         },
+        "UserCountriesTargeting": {
+            "description": "Describes an inclusive/exclusive list of country codes that module targets.",
+            "id": "UserCountriesTargeting",
+            "properties": {
+                "countryCodes": {
+                    "description": "List of country codes in the two-letter CLDR territory format.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "exclude": {
+                    "description": "Indicates if the list above is exclusive.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "UserCountrySet": {
             "description": "A set of user countries. A country set determines what variation of app content gets served to a specific location.",
             "id": "UserCountrySet",
@@ -7294,6 +7897,33 @@
             },
             "type": "object"
         },
+        "VariantTargeting": {
+            "description": "Targeting on the level of variants.",
+            "id": "VariantTargeting",
+            "properties": {
+                "abiTargeting": {
+                    "$ref": "AbiTargeting",
+                    "description": "The abi that the variant targets"
+                },
+                "multiAbiTargeting": {
+                    "$ref": "MultiAbiTargeting",
+                    "description": "Multi-api-level targeting"
+                },
+                "screenDensityTargeting": {
+                    "$ref": "ScreenDensityTargeting",
+                    "description": "The screen densities that this variant supports"
+                },
+                "sdkVersionTargeting": {
+                    "$ref": "SdkVersionTargeting",
+                    "description": "The sdk version that the variant targets"
+                },
+                "textureCompressionFormatTargeting": {
+                    "$ref": "TextureCompressionFormatTargeting",
+                    "description": "Texture-compression-format-level targeting"
+                }
+            },
+            "type": "object"
+        },
         "VoidedPurchase": {
             "description": "A VoidedPurchase resource indicates a purchase that was either canceled/refunded/charged-back.",
             "id": "VoidedPurchase",
@@ -7354,8 +7984,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Google Play Android Developer API",
-    "version": "v3"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/apigateway__v1.json b/discovery/googleapis/apigateway__v1.json
index 41451e5..6f0b1bf 100644
--- a/discovery/googleapis/apigateway__v1.json
+++ b/discovery/googleapis/apigateway__v1.json
@@ -23,6 +23,13 @@
     "name": "apigateway",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230621",
+    "rootUrl": "https://apigateway.googleapis.com/",
+    "servicePath": "",
+    "title": "API Gateway API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -100,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -1081,8 +1087,6 @@
             }
         }
     },
-    "revision": "20230426",
-    "rootUrl": "https://apigateway.googleapis.com/",
     "schemas": {
         "ApigatewayApi": {
             "description": "An API that can be served by one or more Gateways.",
@@ -1796,9 +1800,5 @@
             "properties": {},
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "API Gateway API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/apigee__v1.json b/discovery/googleapis/apigee__v1.json
index 540b865..5222f66 100644
--- a/discovery/googleapis/apigee__v1.json
+++ b/discovery/googleapis/apigee__v1.json
@@ -24,6 +24,13 @@
     "name": "apigee",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230630",
+    "rootUrl": "https://apigee.googleapis.com/",
+    "servicePath": "",
+    "title": "Apigee API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "hybrid": {
             "resources": {
@@ -1592,6 +1598,488 @@
                         }
                     }
                 },
+                "appgroups": {
+                    "methods": {
+                        "create": {
+                            "description": "Creates an AppGroup. Once created, user can register apps under the AppGroup to obtain secret key and password. At creation time, the AppGroup's state is set as `active`. The attribute `Attribute` with key `attribute_name` as `__apigee_reserved__developer_details` can be used to store developers and their roles. The JSON format expected is: [ { \"developer_id\":\"\", \"roles\":[ \"\" ] } ] and is dealt in base64encoded format. Etag will be available in attribute `Attribute` with key `attribute_name` as `__apigee_reserved__developer_details_etag` for that AppGroup.",
+                            "flatPath": "v1/organizations/{organizationsId}/appgroups",
+                            "httpMethod": "POST",
+                            "id": "apigee.organizations.appgroups.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. Name of the Apigee organization in which the AppGroup is created. Use the following structure in your request: `organizations/{org}`.",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/appgroups",
+                            "request": {
+                                "$ref": "GoogleCloudApigeeV1AppGroup"
+                            },
+                            "response": {
+                                "$ref": "GoogleCloudApigeeV1AppGroup"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes an AppGroup. All app and API keys associations with the AppGroup are also removed. **Warning**: This API will permanently delete the AppGroup and related artifacts. **Note**: The delete operation is asynchronous. The AppGroup app is deleted immediately, but its associated resources, such as apps and API keys, may take anywhere from a few seconds to a few minutes to be deleted.",
+                            "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}",
+                            "httpMethod": "DELETE",
+                            "id": "apigee.organizations.appgroups.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleCloudApigeeV1AppGroup"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Returns the AppGroup details for the provided AppGroup name in the request URI.",
+                            "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}",
+                            "httpMethod": "GET",
+                            "id": "apigee.organizations.appgroups.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleCloudApigeeV1AppGroup"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists all AppGroups in an organization. A maximum of 1000 AppGroups are returned in the response if PageSize is not specified, or if the PageSize is greater than 1000.",
+                            "flatPath": "v1/organizations/{organizationsId}/appgroups",
+                            "httpMethod": "GET",
+                            "id": "apigee.organizations.appgroups.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "The filter expression to be used to get the list of AppGroups, where filtering can be done on name, correlationID or channelID of the app group. Example: filter = \"name = foobar\"",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Count of AppGroups a single page can have in the response. If unspecified, at most 1000 AppGroups 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 starting index record for listing the AppGroups.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. Name of the Apigee organization. Use the following structure in your request: `organizations/{org}`.",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/appgroups",
+                            "response": {
+                                "$ref": "GoogleCloudApigeeV1ListAppGroupsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "update": {
+                            "description": "Updates an appGroup. This API replaces the existing appGroup details with those specified in the request. Include or exclude any existing details that you want to retain or delete, respectively. Note that the state of the AppGroup should be updated using `action`, and not via AppGroup. The custom attribute limit is 1000, and is how `__apigee_reserved__developer_details` can be updated. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities are cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds.",
+                            "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}",
+                            "httpMethod": "PUT",
+                            "id": "apigee.organizations.appgroups.update",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "action": {
+                                    "description": "Activate or de-activate the appGroup by setting the action as `active` or `inactive`. The `Content-Type` header must be set to `application/octet-stream`, with empty body.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "request": {
+                                "$ref": "GoogleCloudApigeeV1AppGroup"
+                            },
+                            "response": {
+                                "$ref": "GoogleCloudApigeeV1AppGroup"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "apps": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates an app and associates it with an AppGroup. This API associates the AppGroup app with the specified API product and auto-generates an API key for the app to use in calls to API proxies inside that API product. The `name` is the unique ID of the app that you can use in API calls.",
+                                    "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps",
+                                    "httpMethod": "POST",
+                                    "id": "apigee.organizations.appgroups.apps.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/apps",
+                                    "request": {
+                                        "$ref": "GoogleCloudApigeeV1AppGroupApp"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleCloudApigeeV1AppGroupApp"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes an AppGroup app. **Note**: The delete operation is asynchronous. The AppGroup app is deleted immediately, but its associated resources, such as app keys or access tokens, may take anywhere from a few seconds to a few minutes to be deleted.",
+                                    "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "apigee.organizations.appgroups.apps.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the AppGroup app. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}`",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "GoogleCloudApigeeV1AppGroupApp"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Returns the details for an AppGroup app.",
+                                    "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}",
+                                    "httpMethod": "GET",
+                                    "id": "apigee.organizations.appgroups.apps.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the AppGroup app. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}`",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "GoogleCloudApigeeV1AppGroupApp"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists all apps created by an AppGroup in an Apigee organization. Optionally, you can request an expanded view of the AppGroup apps. Lists all AppGroupApps in an AppGroup. A maximum of 1000 AppGroup apps are returned in the response if PageSize is not specified, or if the PageSize is greater than 1000.",
+                                    "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps",
+                                    "httpMethod": "GET",
+                                    "id": "apigee.organizations.appgroups.apps.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageSize": {
+                                            "description": "Optional. Maximum number entries to return. If unspecified, at most 1000 entries will be returned.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "Optional. Page token. If provides, must be a valid AppGroup app returned from a previous call that can be used to retrieve the next page.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/apps",
+                                    "response": {
+                                        "$ref": "GoogleCloudApigeeV1ListAppGroupAppsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "update": {
+                                    "description": "Updates the details for an AppGroup app. In addition, you can add an API product to an AppGroup app and automatically generate an API key for the app to use when calling APIs in the API product. If you want to use an existing API key for the API product, add the API product to the API key using the UpdateAppGroupAppKey API. Using this API, you cannot update the app name, as it is the primary key used to identify the app and cannot be changed. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively.",
+                                    "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}",
+                                    "httpMethod": "PUT",
+                                    "id": "apigee.organizations.appgroups.apps.update",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "action": {
+                                            "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke`. The `Content-Type` header must be set to `application/octet-stream`, with empty body.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "Required. Name of the AppGroup app. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}`",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "GoogleCloudApigeeV1AppGroupApp"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleCloudApigeeV1AppGroupApp"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "keys": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Creates a custom consumer key and secret for a AppGroup app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the ProductizeAppGroupAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteAppGroupAppKey API.",
+                                            "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys",
+                                            "httpMethod": "POST",
+                                            "id": "apigee.organizations.appgroups.apps.keys.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required. Parent of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys`",
+                                                    "location": "path",
+                                                    "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/keys",
+                                            "request": {
+                                                "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes an app's consumer key and removes all API products associated with the app. After the consumer key is deleted, it cannot be used to access any APIs.",
+                                            "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "apigee.organizations.appgroups.apps.keys.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Name of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}`",
+                                                    "location": "path",
+                                                    "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Gets details for a consumer key for a AppGroup app, including the key and secret value, associated API products, and other information.",
+                                            "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}",
+                                            "httpMethod": "GET",
+                                            "id": "apigee.organizations.appgroups.apps.keys.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Name of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}`",
+                                                    "location": "path",
+                                                    "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "updateAppGroupAppKey": {
+                                            "description": "Adds an API product to an AppGroupAppKey, enabling the app that holds the key to access the API resources bundled in the API product. In addition, you can add attributes to the AppGroupAppKey. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively. You can use the same key to access all API products associated with the app.",
+                                            "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}",
+                                            "httpMethod": "POST",
+                                            "id": "apigee.organizations.appgroups.apps.keys.updateAppGroupAppKey",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Name of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}`",
+                                                    "location": "path",
+                                                    "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "GoogleCloudApigeeV1UpdateAppGroupAppKeyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "apiproducts": {
+                                            "methods": {
+                                                "delete": {
+                                                    "description": "Removes an API product from an app's consumer key. After the API product is removed, the app cannot access the API resources defined in that API product. **Note**: The consumer key is not removed, only its association with the API product.",
+                                                    "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}/apiproducts/{apiproductsId}",
+                                                    "httpMethod": "DELETE",
+                                                    "id": "apigee.organizations.appgroups.apps.keys.apiproducts.delete",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. Parent of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}/apiproducts/{apiproduct}`",
+                                                            "location": "path",
+                                                            "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+/apiproducts/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "updateAppGroupAppKeyApiProduct": {
+                                                    "description": "Approves or revokes the consumer key for an API product. After a consumer key is approved, the app can use it to access APIs. A consumer key that is revoked or pending cannot be used to access an API. Any access tokens associated with a revoked consumer key will remain active. However, Apigee checks the status of the consumer key and if set to `revoked` will not allow access to the API.",
+                                                    "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}/apiproducts/{apiproductsId}",
+                                                    "httpMethod": "POST",
+                                                    "id": "apigee.organizations.appgroups.apps.keys.apiproducts.updateAppGroupAppKeyApiProduct",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "action": {
+                                                            "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke` respectively. The `Content-Type` header, if set, must be set to `application/octet-stream`, with empty body.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "name": {
+                                                            "description": "Required. Name of the API product in the developer app key in the following format: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}/apiproducts/{apiproduct}`",
+                                                            "location": "path",
+                                                            "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+/apiproducts/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "response": {
+                                                        "$ref": "GoogleProtobufEmpty"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                },
                 "apps": {
                     "methods": {
                         "get": {
@@ -1634,7 +2122,7 @@
                                     "type": "string"
                                 },
                                 "apptype": {
-                                    "description": "Optional. Filter by the type of the app. Valid values are `company` or `developer`. Defaults to `developer`.",
+                                    "description": "Optional. 'apptype' is no longer available. Use a 'filter' instead.",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -1643,6 +2131,11 @@
                                     "location": "query",
                                     "type": "boolean"
                                 },
+                                "filter": {
+                                    "description": "Optional. The filter expression to be used to get the list of apps, where filtering can be done on developerEmail, apiProduct, consumerKey, status, appId, appName and appType. Examples: \"developerEmail=foo@bar.com\", \"appType=AppGroup\", or \"appType=Developer\" \"filter\" is supported from ver 1.10.0 and above.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "ids": {
                                     "description": "Optional. Comma-separated list of app IDs on which to filter.",
                                     "location": "query",
@@ -1658,6 +2151,17 @@
                                     "location": "query",
                                     "type": "string"
                                 },
+                                "pageSize": {
+                                    "description": "Optional. Count of apps a single page can have in the response. If unspecified, at most 100 apps will be returned. The maximum value is 100; values above 100 will be coerced to 100. \"page_size\" is supported from ver 1.10.0 and above.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. The starting index record for listing the developers. \"page_token\" is supported from ver 1.10.0 and above.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "parent": {
                                     "description": "Required. Resource path of the parent in the following format: `organizations/{org}`",
                                     "location": "path",
@@ -2527,7 +3031,7 @@
                                 "keys": {
                                     "methods": {
                                         "create": {
-                                            "description": "Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API.",
+                                            "description": "Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API. **Note**: All keys start out with status=approved, even if status=revoked is passed when the key is created. To revoke a key, use the UpdateDeveloperAppKey API.",
                                             "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys",
                                             "httpMethod": "POST",
                                             "id": "apigee.organizations.developers.apps.keys.create",
@@ -2729,7 +3233,7 @@
                                         "create": {
                                             "methods": {
                                                 "create": {
-                                                    "description": "Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API.",
+                                                    "description": "Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API. **Note**: All keys start out with status=approved, even if status=revoked is passed when the key is created. To revoke a key, use the UpdateDeveloperAppKey API.",
                                                     "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/create",
                                                     "httpMethod": "POST",
                                                     "id": "apigee.organizations.developers.apps.keys.create.create",
@@ -8742,8 +9246,6 @@
             }
         }
     },
-    "revision": "20230512",
-    "rootUrl": "https://apigee.googleapis.com/",
     "schemas": {
         "EdgeConfigstoreBundleBadBundle": {
             "description": "Describes why a bundle is invalid. Intended for use in error details.",
@@ -8801,6 +9303,21 @@
             },
             "type": "object"
         },
+        "GoogleCloudApigeeV1APIProductAssociation": {
+            "description": "APIProductAssociation has the API product and its administrative state association.",
+            "id": "GoogleCloudApigeeV1APIProductAssociation",
+            "properties": {
+                "apiproduct": {
+                    "description": "API product to be associated with the credential.",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "The API product credential associated status. Valid values are `approved` or `revoked`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudApigeeV1Access": {
             "id": "GoogleCloudApigeeV1Access",
             "properties": {
@@ -9397,6 +9914,10 @@
                     },
                     "type": "array"
                 },
+                "appGroup": {
+                    "description": "Name of the AppGroup",
+                    "type": "string"
+                },
                 "appId": {
                     "description": "ID of the app.",
                     "type": "string"
@@ -9430,6 +9951,10 @@
                     "readOnly": true,
                     "type": "array"
                 },
+                "developerEmail": {
+                    "description": "Email of the developer.",
+                    "type": "string"
+                },
                 "developerId": {
                     "description": "ID of the developer.",
                     "type": "string"
@@ -9463,6 +9988,192 @@
             },
             "type": "object"
         },
+        "GoogleCloudApigeeV1AppGroup": {
+            "description": "AppGroup contains the request/response fields representing the logical grouping of apps. Note that appgroup_id, create_time and update_time cannot be changed by the user, and gets updated by the system. The name and the organization once provided cannot be edited subsequently.",
+            "id": "GoogleCloudApigeeV1AppGroup",
+            "properties": {
+                "appGroupId": {
+                    "description": "Output only. Internal identifier that cannot be edited",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "attributes": {
+                    "description": "A list of attributes",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1Attribute"
+                    },
+                    "type": "array"
+                },
+                "channelId": {
+                    "description": "channel identifier identifies the owner maintaing this grouping.",
+                    "type": "string"
+                },
+                "channelUri": {
+                    "description": "A reference to the associated storefront/marketplace.",
+                    "type": "string"
+                },
+                "createdAt": {
+                    "description": "Output only. Created time as milliseconds since epoch.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "app group name displayed in the UI",
+                    "type": "string"
+                },
+                "lastModifiedAt": {
+                    "description": "Output only. Modified time as milliseconds since epoch.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Immutable. Name of the AppGroup. Characters you can use in the name are restricted to: A-Z0-9._\\-$ %.",
+                    "type": "string"
+                },
+                "organization": {
+                    "description": "Immutable. the org the app group is created",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "Valid values are `active` or `inactive`. Note that the status of the AppGroup should be updated via UpdateAppGroupRequest by setting the action as `active` or `inactive`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudApigeeV1AppGroupApp": {
+            "description": "Response for [GetAppGroupApp].[AppGroupApps.GetAppGroupApp], [CreateAppGroupAppRequest].[AppGroupApp.CreateAppGroupAppRequest] and [DeleteAppGroupApp].[AppGroupApp.DeleteAppGroupApp]",
+            "id": "GoogleCloudApigeeV1AppGroupApp",
+            "properties": {
+                "apiProducts": {
+                    "description": "List of API products associated with the AppGroup app.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "appGroup": {
+                    "description": "Immutable. Name of the parent AppGroup whose resource name format is of syntax (organizations/*/appgroups/*).",
+                    "type": "string"
+                },
+                "appId": {
+                    "description": "Immutable. ID of the AppGroup app.",
+                    "type": "string"
+                },
+                "attributes": {
+                    "description": "List of attributes for the AppGroup app.",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1Attribute"
+                    },
+                    "type": "array"
+                },
+                "callbackUrl": {
+                    "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to AppGroup apps.",
+                    "type": "string"
+                },
+                "createdAt": {
+                    "description": "Output only. Time the AppGroup app was created in milliseconds since epoch.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "credentials": {
+                    "description": "Output only. Set of credentials for the AppGroup app consisting of the consumer key/secret pairs associated with the API products.",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1Credential"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "keyExpiresIn": {
+                    "description": "Immutable. Expiration time, in seconds, for the consumer key that is generated for the AppGroup app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "lastModifiedAt": {
+                    "description": "Output only. Time the AppGroup app was modified in milliseconds since epoch.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Immutable. Name of the AppGroup app whose resource name format is of syntax (organizations/*/appgroups/*/apps/*).",
+                    "type": "string"
+                },
+                "scopes": {
+                    "description": "Scopes to apply to the AppGroup app. The specified scopes must already exist for the API product that you associate with the AppGroup app.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "status": {
+                    "description": "Status of the App. Valid values include `approved` or `revoked`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudApigeeV1AppGroupAppKey": {
+            "description": "AppGroupAppKey contains all the information associated with the credentials.",
+            "id": "GoogleCloudApigeeV1AppGroupAppKey",
+            "properties": {
+                "apiProducts": {
+                    "description": "Output only. List of API products and its status for which the credential can be used. **Note**: Use UpdateAppGroupAppKeyApiProductRequest API to make the association after the consumer key and secret are created.",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1APIProductAssociation"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "attributes": {
+                    "description": "List of attributes associated with the credential.",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1Attribute"
+                    },
+                    "type": "array"
+                },
+                "consumerKey": {
+                    "description": "Immutable. Consumer key.",
+                    "type": "string"
+                },
+                "consumerSecret": {
+                    "description": "Secret key.",
+                    "type": "string"
+                },
+                "expiresAt": {
+                    "description": "Output only. Time the AppGroup app expires in milliseconds since epoch.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "expiresInSeconds": {
+                    "description": "Immutable. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "issuedAt": {
+                    "description": "Output only. Time the AppGroup app was created in milliseconds since epoch.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "scopes": {
+                    "description": "Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "status": {
+                    "description": "Status of the credential. Valid values include `approved` or `revoked`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudApigeeV1ArchiveDeployment": {
             "description": "Archive Deployment information.",
             "id": "GoogleCloudApigeeV1ArchiveDeployment",
@@ -10970,6 +11681,13 @@
             "description": "Encapsulates a metric grouped by dimension.",
             "id": "GoogleCloudApigeeV1DimensionMetric",
             "properties": {
+                "individualNames": {
+                    "description": "Individual dimension names. E.g. [\"dim1_name\", \"dim2_name\"].",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "metrics": {
                     "description": "List of metrics.",
                     "items": {
@@ -10978,7 +11696,7 @@
                     "type": "array"
                 },
                 "name": {
-                    "description": "Name of the dimension.",
+                    "description": "Comma joined dimension names. E.g. \"dim1_name,dim2_name\". Deprecated. If name already has comma before join, we may get wrong splits. Please use individual_names.",
                     "type": "string"
                 }
             },
@@ -12069,6 +12787,47 @@
             },
             "type": "object"
         },
+        "GoogleCloudApigeeV1ListAppGroupAppsResponse": {
+            "description": "Response for ListAppGroupApps",
+            "id": "GoogleCloudApigeeV1ListAppGroupAppsResponse",
+            "properties": {
+                "appGroupApps": {
+                    "description": "List of AppGroup apps and their credentials.",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1AppGroupApp"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token that can be sent as `next_page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudApigeeV1ListAppGroupsResponse": {
+            "description": "ListAppGroupsResponse contains the 0 or more AppGroups, along with the optional page token and the total count of apps.",
+            "id": "GoogleCloudApigeeV1ListAppGroupsResponse",
+            "properties": {
+                "appGroups": {
+                    "description": "List of AppGroups.",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1AppGroup"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token that can be sent as `next_page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+                    "type": "string"
+                },
+                "totalSize": {
+                    "description": "Total count of AppGroups.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudApigeeV1ListAppsResponse": {
             "id": "GoogleCloudApigeeV1ListAppsResponse",
             "properties": {
@@ -12077,6 +12836,15 @@
                         "$ref": "GoogleCloudApigeeV1App"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token that can be sent as `next_page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+                    "type": "string"
+                },
+                "totalSize": {
+                    "description": "Total count of Apps.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -12901,7 +13669,7 @@
                     "description": "Addon configurations of the Apigee organization."
                 },
                 "analyticsRegion": {
-                    "description": "Required. DEPRECATED: This field will be deprecated once Apigee supports DRZ. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).",
+                    "description": "Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).",
                     "type": "string"
                 },
                 "apiConsumerDataEncryptionKeyName": {
@@ -12968,6 +13736,10 @@
                     "description": "Description of the Apigee organization.",
                     "type": "string"
                 },
+                "disableVpcPeering": {
+                    "description": "Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid.",
+                    "type": "boolean"
+                },
                 "displayName": {
                     "description": "Display name for the Apigee organization. Unused, but reserved for future use.",
                     "type": "string"
@@ -13211,6 +13983,10 @@
                     "description": "Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork`",
                     "type": "string"
                 },
+                "disableVpcPeering": {
+                    "description": "Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid.",
+                    "type": "boolean"
+                },
                 "runtimeLocation": {
                     "description": "Cloud Platform location for the runtime instance. Defaults to zone `us-west1-a`. If a region is provided, `EVAL` organizations will use the region for automatically selecting a zone for the runtime instance.",
                     "type": "string"
@@ -14377,6 +15153,10 @@
             "description": "Represents a SecurityProfile resource.",
             "id": "GoogleCloudApigeeV1SecurityProfile",
             "properties": {
+                "description": {
+                    "description": "Description of the security profile.",
+                    "type": "string"
+                },
                 "displayName": {
                     "description": "Display name of the security profile.",
                     "type": "string"
@@ -15269,6 +16049,28 @@
             },
             "type": "object"
         },
+        "GoogleCloudApigeeV1UpdateAppGroupAppKeyRequest": {
+            "description": "Request for UpdateAppGroupAppKey",
+            "id": "GoogleCloudApigeeV1UpdateAppGroupAppKeyRequest",
+            "properties": {
+                "action": {
+                    "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke` respectively. The `Content-Type` header, if set, must be set to `application/octet-stream`, with empty body.",
+                    "type": "string"
+                },
+                "apiProducts": {
+                    "description": "The list of API products that will be associated with the credential. This list will be appended to the existing list of associated API Products for this App Key. Duplicates will be ignored.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "appGroupAppKey": {
+                    "$ref": "GoogleCloudApigeeV1AppGroupAppKey",
+                    "description": "The new AppGroupKey to be amended. Note that the status can be updated only via action."
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudApigeeV1UpdateError": {
             "description": "Details on why a resource update failed in the runtime.",
             "id": "GoogleCloudApigeeV1UpdateError",
@@ -15655,9 +16457,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Apigee API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/apigeeregistry__v1.json b/discovery/googleapis/apigeeregistry__v1.json
index df80bb3..597cf62 100644
--- a/discovery/googleapis/apigeeregistry__v1.json
+++ b/discovery/googleapis/apigeeregistry__v1.json
@@ -24,6 +24,13 @@
     "name": "apigeeregistry",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230127",
+    "rootUrl": "https://apigeeregistry.googleapis.com/",
+    "servicePath": "",
+    "title": "Apigee Registry API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -3179,8 +3185,6 @@
             }
         }
     },
-    "revision": "20230127",
-    "rootUrl": "https://apigeeregistry.googleapis.com/",
     "schemas": {
         "Api": {
             "description": "A top-level description of an API. Produced by producers and are commitments to provide services.",
@@ -4090,9 +4094,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Apigee Registry API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/apikeys__v2.json b/discovery/googleapis/apikeys__v2.json
index 50306c4..3a05d1a 100644
--- a/discovery/googleapis/apikeys__v2.json
+++ b/discovery/googleapis/apikeys__v2.json
@@ -27,6 +27,13 @@
     "name": "apikeys",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230710",
+    "rootUrl": "https://apikeys.googleapis.com/",
+    "servicePath": "",
+    "title": "API Keys API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "keys": {
             "methods": {
@@ -394,8 +400,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://apikeys.googleapis.com/",
     "schemas": {
         "Operation": {
             "description": "This resource represents a long-running operation that is the result of a network API call.",
@@ -688,9 +692,5 @@
             "properties": {},
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "API Keys API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/appengine__v1.json b/discovery/googleapis/appengine__v1.json
index 1a87449..1bed453 100644
--- a/discovery/googleapis/appengine__v1.json
+++ b/discovery/googleapis/appengine__v1.json
@@ -29,6 +29,13 @@
     "name": "appengine",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230706",
+    "rootUrl": "https://appengine.googleapis.com/",
+    "servicePath": "",
+    "title": "App Engine Admin API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -106,7 +113,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "apps": {
             "methods": {
@@ -116,13 +122,7 @@
                     "httpMethod": "POST",
                     "id": "appengine.apps.create",
                     "parameterOrder": [],
-                    "parameters": {
-                        "parent": {
-                            "description": "The project and location in which the application should be created, specified in the format projects/*/locations/*",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
+                    "parameters": {},
                     "path": "v1/apps",
                     "request": {
                         "$ref": "Application"
@@ -1597,96 +1597,8 @@
                     }
                 }
             }
-        },
-        "projects": {
-            "resources": {
-                "locations": {
-                    "resources": {
-                        "applications": {
-                            "methods": {
-                                "create": {
-                                    "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields: id - The ID of the target Cloud Platform project. location - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/standard/python/console/).",
-                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/applications",
-                                    "httpMethod": "POST",
-                                    "id": "appengine.projects.locations.applications.create",
-                                    "parameterOrder": [
-                                        "projectsId",
-                                        "locationsId"
-                                    ],
-                                    "parameters": {
-                                        "locationsId": {
-                                            "description": "Part of `parent`. See documentation of `projectsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectsId": {
-                                            "description": "Part of `parent`. The project and location in which the application should be created, specified in the format projects/*/locations/*",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectsId}/locations/{locationsId}/applications",
-                                    "request": {
-                                        "$ref": "Application"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets information about an application.",
-                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}",
-                                    "httpMethod": "GET",
-                                    "id": "appengine.projects.locations.applications.get",
-                                    "parameterOrder": [
-                                        "projectsId",
-                                        "locationsId",
-                                        "applicationsId"
-                                    ],
-                                    "parameters": {
-                                        "applicationsId": {
-                                            "description": "Part of `name`. See documentation of `projectsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "locationsId": {
-                                            "description": "Part of `name`. See documentation of `projectsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectsId": {
-                                            "description": "Part of `name`. Name of the Application resource to get. Example: apps/myapp.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}",
-                                    "response": {
-                                        "$ref": "Application"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/appengine.admin",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                }
-                            }
-                        }
-                    }
-                }
-            }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://appengine.googleapis.com/",
     "schemas": {
         "ApiConfigHandler": {
             "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration for API handlers.",
@@ -4081,9 +3993,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "App Engine Admin API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/artifactregistry__v1.json b/discovery/googleapis/artifactregistry__v1.json
index 1c051d0..25665bc 100644
--- a/discovery/googleapis/artifactregistry__v1.json
+++ b/discovery/googleapis/artifactregistry__v1.json
@@ -27,6 +27,13 @@
     "name": "artifactregistry",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230628",
+    "rootUrl": "https://artifactregistry.googleapis.com/",
+    "servicePath": "",
+    "title": "Artifact Registry API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "methods": {
@@ -801,6 +807,50 @@
                                         }
                                     }
                                 },
+                                "goModules": {
+                                    "methods": {
+                                        "upload": {
+                                            "description": "Directly uploads a Go module. The returned Operation will complete once the Go module is uploaded. Package, Version, and File resources are created based on the uploaded Go module.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/repositories/{repositoriesId}/goModules:create",
+                                            "httpMethod": "POST",
+                                            "id": "artifactregistry.projects.locations.repositories.goModules.upload",
+                                            "mediaUpload": {
+                                                "accept": [
+                                                    "*/*"
+                                                ],
+                                                "protocols": {
+                                                    "simple": {
+                                                        "multipart": true,
+                                                        "path": "/upload/v1/{+parent}/goModules:create"
+                                                    }
+                                                }
+                                            },
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "The resource name of the repository where the Go module will be uploaded.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/repositories/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/goModules:create",
+                                            "request": {
+                                                "$ref": "UploadGoModuleRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "UploadGoModuleMediaResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ],
+                                            "supportsMediaUpload": true
+                                        }
+                                    }
+                                },
                                 "googetArtifacts": {
                                     "methods": {
                                         "import": {
@@ -1255,7 +1305,7 @@
                                                             "type": "string"
                                                         },
                                                         "parent": {
-                                                            "description": "The name of the parent resource whose tags will be listed.",
+                                                            "description": "The name of the parent package whose tags will be listed. Example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1",
                                                             "location": "path",
                                                             "pattern": "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/packages/[^/]+$",
                                                             "required": true,
@@ -1309,6 +1359,34 @@
                                         },
                                         "versions": {
                                             "methods": {
+                                                "batchDelete": {
+                                                    "description": "Deletes multiple versions across a repository. The returned operation will complete once the versions have been deleted.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/repositories/{repositoriesId}/packages/{packagesId}/versions:batchDelete",
+                                                    "httpMethod": "POST",
+                                                    "id": "artifactregistry.projects.locations.repositories.packages.versions.batchDelete",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "parent": {
+                                                            "description": "The name of the repository holding all requested versions.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/repositories/[^/]+/packages/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/versions:batchDelete",
+                                                    "request": {
+                                                        "$ref": "BatchDeleteVersionsRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "Operation"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
                                                 "delete": {
                                                     "description": "Deletes a version and all of its content. The returned operation will complete once the version has been deleted.",
                                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/repositories/{repositoriesId}/packages/{packagesId}/versions/{versionsId}",
@@ -1587,8 +1665,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://artifactregistry.googleapis.com/",
     "schemas": {
         "AptArtifact": {
             "description": "A detailed representation of an Apt artifact. Information in the record is derived from the archive's control file. See https://www.debian.org/doc/debian-policy/ch-controlfields.html",
@@ -1652,6 +1728,24 @@
             },
             "type": "object"
         },
+        "BatchDeleteVersionsRequest": {
+            "description": "The request to delete multiple versions across a repository.",
+            "id": "BatchDeleteVersionsRequest",
+            "properties": {
+                "names": {
+                    "description": "Required. The names of the versions to delete. A maximum of 10000 versions can be deleted in a batch.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "validateOnly": {
+                    "description": "If true, the request is performed without deleting data, following AIP-163.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "Binding": {
             "description": "Associates `members`, or principals, with a `role`.",
             "id": "Binding",
@@ -1674,6 +1768,117 @@
             },
             "type": "object"
         },
+        "CleanupPolicy": {
+            "description": "Artifact policy configuration for repository cleanup policies.",
+            "id": "CleanupPolicy",
+            "properties": {
+                "action": {
+                    "description": "Policy action.",
+                    "enum": [
+                        "ACTION_UNSPECIFIED",
+                        "DELETE",
+                        "KEEP"
+                    ],
+                    "enumDescriptions": [
+                        "Action not specified.",
+                        "Delete action.",
+                        "Keep action."
+                    ],
+                    "type": "string"
+                },
+                "condition": {
+                    "$ref": "CleanupPolicyCondition",
+                    "description": "Policy condition for matching versions."
+                },
+                "id": {
+                    "description": "The user-provided ID of the cleanup policy.",
+                    "type": "string"
+                },
+                "mostRecentVersions": {
+                    "$ref": "CleanupPolicyMostRecentVersions",
+                    "description": "Policy condition for retaining a minimum number of versions. May only be specified with a Keep action."
+                }
+            },
+            "type": "object"
+        },
+        "CleanupPolicyCondition": {
+            "description": "CleanupPolicyCondition is a set of conditions attached to a CleanupPolicy. If multiple entries are set, all must be satisfied for the condition to be satisfied.",
+            "id": "CleanupPolicyCondition",
+            "properties": {
+                "newerThan": {
+                    "description": "Match versions newer than a duration.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "olderThan": {
+                    "description": "Match versions older than a duration.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "packageNamePrefixes": {
+                    "description": "Match versions by package prefix. Applied on any prefix match.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "tagPrefixes": {
+                    "description": "Match versions by tag prefix. Applied on any prefix match.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "tagState": {
+                    "description": "Match versions by tag status.",
+                    "enum": [
+                        "TAG_STATE_UNSPECIFIED",
+                        "TAGGED",
+                        "UNTAGGED",
+                        "ANY"
+                    ],
+                    "enumDescriptions": [
+                        "Tag status not specified.",
+                        "Applies to tagged versions only.",
+                        "Applies to untagged versions only.",
+                        "Applies to all versions."
+                    ],
+                    "type": "string"
+                },
+                "versionAge": {
+                    "description": "DEPRECATED: Use older_than.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "versionNamePrefixes": {
+                    "description": "Match versions by version name prefix. Applied on any prefix match.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "CleanupPolicyMostRecentVersions": {
+            "description": "CleanupPolicyMostRecentVersions is an alternate condition of a CleanupPolicy for retaining a minimum number of versions.",
+            "id": "CleanupPolicyMostRecentVersions",
+            "properties": {
+                "keepCount": {
+                    "description": "Minimum number of versions to keep.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "packageNamePrefixes": {
+                    "description": "List of package name prefixes that will apply this rule.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "DockerImage": {
             "description": "DockerImage represents a docker artifact. The following fields are returned as untyped metadata in the Version resource, using camelcase keys (i.e. metadata.imageSizeBytes): * imageSizeBytes * mediaType * buildTime",
             "id": "DockerImage",
@@ -1780,6 +1985,33 @@
             },
             "type": "object"
         },
+        "GoModule": {
+            "description": "GoModule represents a Go module.",
+            "id": "GoModule",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The time when the Go module is created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The resource name of a Go module.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the Go module is updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "version": {
+                    "description": "The version of the Go module. Must be a valid canonical version as defined in https://go.dev/ref/mod#glos-canonical-version.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogetArtifact": {
             "description": "A detailed representation of a GooGet artifact.",
             "id": "GoogetArtifact",
@@ -1964,7 +2196,7 @@
             "id": "ImportGoogetArtifactsGcsSource",
             "properties": {
                 "uris": {
-                    "description": "Cloud Storage paths URI (e.g., gs://my_bucket/my_object).",
+                    "description": "Cloud Storage paths URI (e.g., `gs://my_bucket/my_object`).",
                     "items": {
                         "type": "string"
                     },
@@ -2511,7 +2743,7 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name of the package, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1\". If the package ID part contains slashes, the slashes are escaped.",
+                    "description": "The name of the package, for example: `projects/p1/locations/us-central1/repositories/repo1/packages/pkg1`. If the package ID part contains slashes, the slashes are escaped.",
                     "type": "string"
                 },
                 "updateTime": {
@@ -2658,6 +2890,17 @@
             "description": "A Repository for storing artifacts with a specific format.",
             "id": "Repository",
             "properties": {
+                "cleanupPolicies": {
+                    "additionalProperties": {
+                        "$ref": "CleanupPolicy"
+                    },
+                    "description": "Optional. Cleanup policies for this repository. Cleanup policies indicate when certain package versions can be automatically deleted. Map keys are policy IDs supplied by users during policy creation. They must unique within a repository and be under 128 characters in length.",
+                    "type": "object"
+                },
+                "cleanupPolicyDryRun": {
+                    "description": "Optional. If true, the cleanup pipeline is prevented from deleting versions in this repository.",
+                    "type": "boolean"
+                },
                 "createTime": {
                     "description": "Output only. The time when the repository was created.",
                     "format": "google-datetime",
@@ -2683,7 +2926,8 @@
                         "YUM",
                         "GOOGET",
                         "PYTHON",
-                        "KFP"
+                        "KFP",
+                        "GO"
                     ],
                     "enumDescriptions": [
                         "Unspecified package format.",
@@ -2694,7 +2938,8 @@
                         "YUM package format.",
                         "GooGet package format.",
                         "Python package format.",
-                        "Kubeflow Pipelines package format."
+                        "Kubeflow Pipelines package format.",
+                        "Go package format."
                     ],
                     "type": "string"
                 },
@@ -2879,6 +3124,29 @@
             },
             "type": "object"
         },
+        "UploadGoModuleMediaResponse": {
+            "description": "The response to upload a Go module.",
+            "id": "UploadGoModuleMediaResponse",
+            "properties": {
+                "operation": {
+                    "$ref": "Operation",
+                    "description": "Operation to be returned to the user."
+                }
+            },
+            "type": "object"
+        },
+        "UploadGoModuleMetadata": {
+            "description": "The operation metadata for uploading go modules.",
+            "id": "UploadGoModuleMetadata",
+            "properties": {},
+            "type": "object"
+        },
+        "UploadGoModuleRequest": {
+            "description": "The request to upload a Go module.",
+            "id": "UploadGoModuleRequest",
+            "properties": {},
+            "type": "object"
+        },
         "UploadGoogetArtifactMediaResponse": {
             "description": "The response to upload an artifact.",
             "id": "UploadGoogetArtifactMediaResponse",
@@ -2907,7 +3175,7 @@
             "id": "UploadGoogetArtifactResponse",
             "properties": {
                 "googetArtifacts": {
-                    "description": "The Apt artifacts updated.",
+                    "description": "The GooGet artifacts updated.",
                     "items": {
                         "$ref": "GoogetArtifact"
                     },
@@ -3125,9 +3393,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Artifact Registry API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/assuredworkloads__v1.json b/discovery/googleapis/assuredworkloads__v1.json
index cf1d9a8..234a09c 100644
--- a/discovery/googleapis/assuredworkloads__v1.json
+++ b/discovery/googleapis/assuredworkloads__v1.json
@@ -24,6 +24,13 @@
     "name": "assuredworkloads",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230630",
+    "rootUrl": "https://assuredworkloads.googleapis.com/",
+    "servicePath": "",
+    "title": "Assured Workloads API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "organizations": {
             "resources": {
@@ -213,7 +219,7 @@
                                     ]
                                 },
                                 "delete": {
-                                    "description": "Deletes the workload. Make sure that workload's direct children are already in a deleted state, otherwise the request will fail with a FAILED_PRECONDITION error.",
+                                    "description": "Deletes the workload. Make sure that workload's direct children are already in a deleted state, otherwise the request will fail with a FAILED_PRECONDITION error. In addition to assuredworkloads.workload.delete permission, the user should also have orgpolicy.policy.set permission on the deleted folder to remove Assured Workloads OrgPolicies.",
                                     "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}",
                                     "httpMethod": "DELETE",
                                     "id": "assuredworkloads.organizations.locations.workloads.delete",
@@ -252,7 +258,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "Required. The resource name of the Workload to fetch. This is the workload's relative path in the API, formatted as \"organizations/{organization_id}/locations/{location_id}/workloads/{workload_id}\". For example, \"organizations/123/locations/us-east1/workloads/assured-workload-1\".",
+                                            "description": "Required. The resource name of the Workload to fetch. This is the workloads's relative path in the API, formatted as \"organizations/{organization_id}/locations/{location_id}/workloads/{workload_id}\". For example, \"organizations/123/locations/us-east1/workloads/assured-workload-1\".",
                                             "location": "path",
                                             "pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
                                             "required": true,
@@ -517,11 +523,9 @@
             }
         }
     },
-    "revision": "20230420",
-    "rootUrl": "https://assuredworkloads.googleapis.com/",
     "schemas": {
         "GoogleCloudAssuredworkloadsV1AcknowledgeViolationRequest": {
-            "description": "Request for acknowledging the violation Next Id: 4",
+            "description": "Request for acknowledging the violation Next Id: 5",
             "id": "GoogleCloudAssuredworkloadsV1AcknowledgeViolationRequest",
             "properties": {
                 "comment": {
@@ -563,7 +567,8 @@
                         "ASSURED_WORKLOADS_FOR_PARTNERS",
                         "ISR_REGIONS",
                         "ISR_REGIONS_AND_SUPPORT",
-                        "CA_PROTECTED_B"
+                        "CA_PROTECTED_B",
+                        "IL5"
                     ],
                     "enumDescriptions": [
                         "Unknown compliance regime.",
@@ -578,10 +583,11 @@
                         "Assured Workloads For Canada Regions and Support controls",
                         "International Traffic in Arms Regulations",
                         "Assured Workloads for Australia Regions and Support controls Available for public preview consumption. Don't create production workloads.",
-                        "Assured Workloads for Partners",
+                        "Assured Workloads for Partners;",
+                        "Assured Workloads for Israel",
                         "Assured Workloads for Israel Regions",
-                        "Assured Workloads for Israel Regions",
-                        "Assured Workloads for Canada Protected B regime"
+                        "Assured Workloads for Canada Protected B regime",
+                        "Information protection as per DoD IL5 requirements."
                     ],
                     "type": "string"
                 },
@@ -638,7 +644,7 @@
             "type": "object"
         },
         "GoogleCloudAssuredworkloadsV1MutatePartnerPermissionsRequest": {
-            "description": "Request of updating permission settings for a partner workload.",
+            "description": "Request for updating permission settings for a partner workload.",
             "id": "GoogleCloudAssuredworkloadsV1MutatePartnerPermissionsRequest",
             "properties": {
                 "etag": {
@@ -673,7 +679,7 @@
                         "Unknown restriction type.",
                         "Allow the use all of all gcp products, irrespective of the compliance posture. This effectively removes gcp.restrictServiceUsage OrgPolicy on the AssuredWorkloads Folder.",
                         "Based on Workload's compliance regime, allowed list changes. See - https://cloud.google.com/assured-workloads/docs/supported-products for the list of supported resources.",
-                        "Similar to ALLOW_COMPLIANT_RESOURCES but adds the list of compliant resources to the existing list of resources. Effective org-policy of the Folder is considered to ensure there is no disruption to the existing customer workflows."
+                        "Similar to ALLOW_COMPLIANT_RESOURCES but adds the list of compliant resources to the existing list of compliant resources. Effective org-policy of the Folder is considered to ensure there is no disruption to the existing customer workflows."
                     ],
                     "type": "string"
                 }
@@ -735,11 +741,6 @@
                     "readOnly": true,
                     "type": "string"
                 },
-                "orgPolicyConstraint": {
-                    "description": "Output only. Immutable. The org-policy-constraint that was incorrectly changed, which resulted in this violation.",
-                    "readOnly": true,
-                    "type": "string"
-                },
                 "remediation": {
                     "$ref": "GoogleCloudAssuredworkloadsV1ViolationRemediation",
                     "description": "Output only. Compliance violation remediation",
@@ -799,14 +800,16 @@
                         "REMEDIATION_BOOLEAN_ORG_POLICY_VIOLATION",
                         "REMEDIATION_LIST_ALLOWED_VALUES_ORG_POLICY_VIOLATION",
                         "REMEDIATION_LIST_DENIED_VALUES_ORG_POLICY_VIOLATION",
-                        "REMEDIATION_RESTRICT_CMEK_CRYPTO_KEY_PROJECTS_ORG_POLICY_VIOLATION"
+                        "REMEDIATION_RESTRICT_CMEK_CRYPTO_KEY_PROJECTS_ORG_POLICY_VIOLATION",
+                        "REMEDIATION_RESOURCE_VIOLATION"
                     ],
                     "enumDescriptions": [
                         "Unspecified remediation type",
                         "Remediation type for boolean org policy",
                         "Remediation type for list org policy which have allowed values in the monitoring rule",
                         "Remediation type for list org policy which have denied values in the monitoring rule",
-                        "Remediation type for gcp.restrictCmekCryptoKeyProjects"
+                        "Remediation type for gcp.restrictCmekCryptoKeyProjects",
+                        "Remediation type for resource violation."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -911,7 +914,8 @@
                         "ASSURED_WORKLOADS_FOR_PARTNERS",
                         "ISR_REGIONS",
                         "ISR_REGIONS_AND_SUPPORT",
-                        "CA_PROTECTED_B"
+                        "CA_PROTECTED_B",
+                        "IL5"
                     ],
                     "enumDescriptions": [
                         "Unknown compliance regime.",
@@ -926,10 +930,11 @@
                         "Assured Workloads For Canada Regions and Support controls",
                         "International Traffic in Arms Regulations",
                         "Assured Workloads for Australia Regions and Support controls Available for public preview consumption. Don't create production workloads.",
-                        "Assured Workloads for Partners",
+                        "Assured Workloads for Partners;",
+                        "Assured Workloads for Israel",
                         "Assured Workloads for Israel Regions",
-                        "Assured Workloads for Israel Regions",
-                        "Assured Workloads for Canada Protected B regime"
+                        "Assured Workloads for Canada Protected B regime",
+                        "Information protection as per DoD IL5 requirements."
                     ],
                     "type": "string"
                 },
@@ -1016,6 +1021,10 @@
                     ],
                     "type": "string"
                 },
+                "partnerPermissions": {
+                    "$ref": "GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissions",
+                    "description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
+                },
                 "provisionedResourcesParent": {
                     "description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}",
                     "type": "string"
@@ -1041,7 +1050,7 @@
                     "readOnly": true
                 },
                 "violationNotificationsEnabled": {
-                    "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored.",
+                    "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload.",
                     "type": "boolean"
                 }
             },
@@ -1052,12 +1061,12 @@
             "id": "GoogleCloudAssuredworkloadsV1WorkloadComplianceStatus",
             "properties": {
                 "acknowledgedViolationCount": {
-                    "description": "Count of active Violations which are acknowledged in the Workload.",
+                    "description": "Number of current orgPolicy violations which are acknowledged.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "activeViolationCount": {
-                    "description": "Count of active Violations which haven't been acknowledged.",
+                    "description": "Number of current orgPolicy violations which are not acknowledged.",
                     "format": "int32",
                     "type": "integer"
                 }
@@ -1124,7 +1133,7 @@
             "type": "object"
         },
         "GoogleCloudAssuredworkloadsV1WorkloadKMSSettings": {
-            "description": "Settings specific to the Key Management Service. This message is deprecated. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.",
+            "description": "Settings specific to the Key Management Service.",
             "id": "GoogleCloudAssuredworkloadsV1WorkloadKMSSettings",
             "properties": {
                 "nextRotationTime": {
@@ -1151,10 +1160,6 @@
                 "remediateFolderViolations": {
                     "description": "Allow partner to monitor folder and remediate violations",
                     "type": "boolean"
-                },
-                "serviceAccessApprover": {
-                    "description": "Allow partner to approve or reject Service Access requests",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -1179,7 +1184,7 @@
                     ],
                     "enumDescriptions": [
                         "Unknown resource type.",
-                        "Consumer project. AssuredWorkloads Projects are no longer supported. This field will be ignored only in CreateWorkload requests. ListWorkloads and GetWorkload will continue to provide projects information. Use CONSUMER_FOLDER instead.",
+                        "Deprecated. Existing workloads will continue to support this, but new CreateWorkloadRequests should not specify this as an input value.",
                         "Consumer Folder.",
                         "Consumer project containing encryption keys.",
                         "Keyring resource that hosts encryption keys."
@@ -1202,7 +1207,7 @@
                     "type": "string"
                 },
                 "resourceType": {
-                    "description": "Indicates the type of resource. This field should be specified to correspond the id to the right resource type (CONSUMER_FOLDER or ENCRYPTION_KEYS_PROJECT)",
+                    "description": "Indicates the type of resource. This field should be specified to correspond the id to the right project type (CONSUMER_PROJECT or ENCRYPTION_KEYS_PROJECT)",
                     "enum": [
                         "RESOURCE_TYPE_UNSPECIFIED",
                         "CONSUMER_PROJECT",
@@ -1212,7 +1217,7 @@
                     ],
                     "enumDescriptions": [
                         "Unknown resource type.",
-                        "Consumer project. AssuredWorkloads Projects are no longer supported. This field will be ignored only in CreateWorkload requests. ListWorkloads and GetWorkload will continue to provide projects information. Use CONSUMER_FOLDER instead.",
+                        "Deprecated. Existing workloads will continue to support this, but new CreateWorkloadRequests should not specify this as an input value.",
                         "Consumer Folder.",
                         "Consumer project containing encryption keys.",
                         "Keyring resource that hosts encryption keys."
@@ -1350,9 +1355,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Assured Workloads API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/authorizedbuyersmarketplace__v1.json b/discovery/googleapis/authorizedbuyersmarketplace__v1.json
index bcff60b..7daa8ff 100644
--- a/discovery/googleapis/authorizedbuyersmarketplace__v1.json
+++ b/discovery/googleapis/authorizedbuyersmarketplace__v1.json
@@ -24,6 +24,13 @@
     "name": "authorizedbuyersmarketplace",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230712",
+    "rootUrl": "https://authorizedbuyersmarketplace.googleapis.com/",
+    "servicePath": "",
+    "title": "Authorized Buyers Marketplace API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "bidders": {
             "resources": {
@@ -117,7 +123,7 @@
                             ],
                             "parameters": {
                                 "filter": {
-                                    "description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/v2/list-filters) Supported columns for filtering are: * deal.displayName * deal.dealType * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * dealServingStatus",
+                                    "description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported columns for filtering are: * deal.displayName * deal.dealType * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * dealServingStatus",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -457,7 +463,7 @@
                             ],
                             "parameters": {
                                 "filter": {
-                                    "description": "Query string using the [Filtering Syntax](https://developers.google.com/authorized-buyers/apis/guides/v2/list-filters) Supported fields for filtering are: * partnerClientId Use this field to filter the clients by the partnerClientId. For example, if the partnerClientId of the client is \"1234\", the value of this field should be `partnerClientId = \"1234\"`, in order to get only the client whose partnerClientId is \"1234\" in the response.",
+                                    "description": "Query string using the [Filtering Syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported fields for filtering are: * partnerClientId Use this field to filter the clients by the partnerClientId. For example, if the partnerClientId of the client is \"1234\", the value of this field should be `partnerClientId = \"1234\"`, in order to get only the client whose partnerClientId is \"1234\" in the response.",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -765,7 +771,7 @@
                             ],
                             "parameters": {
                                 "filter": {
-                                    "description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/v2/list-filters) Supported columns for filtering are: * deal.displayName * deal.dealType * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * dealServingStatus",
+                                    "description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported columns for filtering are: * deal.displayName * deal.dealType * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * dealServingStatus",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -974,7 +980,7 @@
                             ]
                         },
                         "get": {
-                            "description": "Gets a proposal using its name. The proposal is returned at most recent revision. revision.",
+                            "description": "Gets a proposal using its resource name. The proposal is returned at the latest revision.",
                             "flatPath": "v1/buyers/{buyersId}/proposals/{proposalsId}",
                             "httpMethod": "GET",
                             "id": "authorizedbuyersmarketplace.buyers.proposals.get",
@@ -999,7 +1005,7 @@
                             ]
                         },
                         "list": {
-                            "description": "Lists proposals. A filter expression (list filter syntax) may be specified to filter the results. This will not list finalized versions of proposals that are being renegotiated; to retrieve these use the finalizedProposals resource.",
+                            "description": "Lists proposals. A filter expression using [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) may be specified to filter the results.",
                             "flatPath": "v1/buyers/{buyersId}/proposals",
                             "httpMethod": "GET",
                             "id": "authorizedbuyersmarketplace.buyers.proposals.list",
@@ -1008,7 +1014,7 @@
                             ],
                             "parameters": {
                                 "filter": {
-                                    "description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/v2/list-filters) Supported columns for filtering are: * displayName * dealType * updateTime * state",
+                                    "description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported columns for filtering are: * displayName * dealType * updateTime * state",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -1040,7 +1046,7 @@
                             ]
                         },
                         "patch": {
-                            "description": "Updates the proposal at the given revision number. If the revision number in the request is behind the latest from the server, an error message will be returned. See FieldMask for how to use FieldMask. Only fields specified in the UpdateProposalRequest.update_mask will be updated; Fields noted as 'Immutable' or 'Output only' yet specified in the UpdateProposalRequest.update_mask will be ignored and left unchanged. Updating a private auction proposal is not allowed and will result in an error.",
+                            "description": "Updates the proposal at the given revision number. If the revision number in the request is behind the latest one kept in the server, an error message will be returned. See FieldMask for how to use FieldMask. Only fields specified in the UpdateProposalRequest.update_mask will be updated; Fields noted as 'Immutable' or 'Output only' yet specified in the UpdateProposalRequest.update_mask will be ignored and left unchanged. Updating a private auction proposal is not allowed and will result in an error.",
                             "flatPath": "v1/buyers/{buyersId}/proposals/{proposalsId}",
                             "httpMethod": "PATCH",
                             "id": "authorizedbuyersmarketplace.buyers.proposals.patch",
@@ -1269,7 +1275,7 @@
                             ],
                             "parameters": {
                                 "filter": {
-                                    "description": "Optional query string using the [Cloud API list filtering] (https://developers.google.com/authorized-buyers/apis/guides/v2/list-filters) syntax.",
+                                    "description": "Optional query string using the [Cloud API list filtering] (https://developers.google.com/authorized-buyers/apis/guides/list-filters) syntax.",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -1305,8 +1311,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://authorizedbuyersmarketplace.googleapis.com/",
     "schemas": {
         "AcceptProposalRequest": {
             "description": "Request to accept a proposal. Accepting a proposal implies acceptance of the publisher terms_and_conditions, if any.",
@@ -3121,9 +3125,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Authorized Buyers Marketplace API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/baremetalsolution__v2.json b/discovery/googleapis/baremetalsolution__v2.json
index 08364dd..bd97013 100644
--- a/discovery/googleapis/baremetalsolution__v2.json
+++ b/discovery/googleapis/baremetalsolution__v2.json
@@ -23,6 +23,13 @@
     "name": "baremetalsolution",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230628",
+    "rootUrl": "https://baremetalsolution.googleapis.com/",
+    "servicePath": "",
+    "title": "Bare Metal Solution API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -100,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -174,65 +180,8 @@
                         }
                     },
                     "resources": {
-                        "instanceProvisioningSettings": {
-                            "methods": {
-                                "fetch": {
-                                    "description": "Get instance provisioning settings for a given project. This is hidden method used by UI only.",
-                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instanceProvisioningSettings:fetch",
-                                    "httpMethod": "GET",
-                                    "id": "baremetalsolution.projects.locations.instanceProvisioningSettings.fetch",
-                                    "parameterOrder": [
-                                        "location"
-                                    ],
-                                    "parameters": {
-                                        "location": {
-                                            "description": "Required. The parent project and location containing the ProvisioningSettings.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2/{+location}/instanceProvisioningSettings:fetch",
-                                    "response": {
-                                        "$ref": "FetchInstanceProvisioningSettingsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            }
-                        },
                         "instances": {
                             "methods": {
-                                "create": {
-                                    "description": "Create an Instance.",
-                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instances",
-                                    "httpMethod": "POST",
-                                    "id": "baremetalsolution.projects.locations.instances.create",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "parent": {
-                                            "description": "Required. The parent project and location.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2/{+parent}/instances",
-                                    "request": {
-                                        "$ref": "Instance"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
                                 "detachLun": {
                                     "description": "Detach LUN from Instance.",
                                     "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:detachLun",
@@ -1603,8 +1552,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://baremetalsolution.googleapis.com/",
     "schemas": {
         "AllowedClient": {
             "description": "Represents an 'access point' for the share.",
@@ -1702,20 +1649,6 @@
             "properties": {},
             "type": "object"
         },
-        "FetchInstanceProvisioningSettingsResponse": {
-            "description": "Response with all provisioning settings.",
-            "id": "FetchInstanceProvisioningSettingsResponse",
-            "properties": {
-                "images": {
-                    "description": "The OS images available.",
-                    "items": {
-                        "$ref": "OSImage"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudBaremetalsolutionV2LogicalInterface": {
             "description": "Each logical interface represents a logical abstraction of the underlying physical interface (for eg. bond, nic) of the instance. Each logical interface can effectively map to multiple network-IP pairs and still be mapped to one underlying physical interface.",
             "id": "GoogleCloudBaremetalsolutionV2LogicalInterface",
@@ -1739,35 +1672,6 @@
             },
             "type": "object"
         },
-        "GoogleCloudBaremetalsolutionV2ServerNetworkTemplateLogicalInterface": {
-            "description": "Logical interface.",
-            "id": "GoogleCloudBaremetalsolutionV2ServerNetworkTemplateLogicalInterface",
-            "properties": {
-                "name": {
-                    "description": "Interface name. This is not a globally unique identifier. Name is unique only inside the ServerNetworkTemplate. This is of syntax or and forms part of the network template name.",
-                    "type": "string"
-                },
-                "required": {
-                    "description": "If true, interface must have network connected.",
-                    "type": "boolean"
-                },
-                "type": {
-                    "description": "Interface type.",
-                    "enum": [
-                        "INTERFACE_TYPE_UNSPECIFIED",
-                        "BOND",
-                        "NIC"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified value.",
-                        "Bond interface type.",
-                        "NIC interface type."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Instance": {
             "description": "A server.",
             "id": "Instance",
@@ -1968,6 +1872,13 @@
                     "$ref": "NetworkAddress",
                     "description": "Private network address, if any. Filled if InstanceConfig.multivlan_config is false."
                 },
+                "sshKeyNames": {
+                    "description": "List of names of ssh keys used to provision the instance.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "userNote": {
                     "description": "User note field, it can be used by customers to add additional information for the BMS Ops team .",
                     "type": "string"
@@ -2827,40 +2738,6 @@
             },
             "type": "object"
         },
-        "OSImage": {
-            "description": "Operation System image.",
-            "id": "OSImage",
-            "properties": {
-                "applicableInstanceTypes": {
-                    "description": "Instance types this image is applicable to. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "OS Image code.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "OS Image description.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Output only. OS Image's unique name.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "supportedNetworkTemplates": {
-                    "description": "Network templates that can be used with this OS Image.",
-                    "items": {
-                        "$ref": "ServerNetworkTemplate"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Operation": {
             "description": "This resource represents a long-running operation that is the result of a network API call.",
             "id": "Operation",
@@ -3115,6 +2992,12 @@
             "properties": {},
             "type": "object"
         },
+        "ResetInstanceResponse": {
+            "description": "Response message from resetting a server.",
+            "id": "ResetInstanceResponse",
+            "properties": {},
+            "type": "object"
+        },
         "ResizeVolumeRequest": {
             "description": "Request for emergency resize Volume.",
             "id": "ResizeVolumeRequest",
@@ -3149,32 +3032,6 @@
             },
             "type": "object"
         },
-        "ServerNetworkTemplate": {
-            "description": "Network template.",
-            "id": "ServerNetworkTemplate",
-            "properties": {
-                "applicableInstanceTypes": {
-                    "description": "Instance types this template is applicable to.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "logicalInterfaces": {
-                    "description": "Logical interfaces.",
-                    "items": {
-                        "$ref": "GoogleCloudBaremetalsolutionV2ServerNetworkTemplateLogicalInterface"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Output only. Template's unique name. The full resource name follows the pattern: `projects/{project}/locations/{location}/serverNetworkTemplate/{server_network_template}` Generally, the {server_network_template} follows the syntax of \"bond\" or \"nic\".",
-                    "readOnly": true,
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "SnapshotReservationDetail": {
             "description": "Details about snapshot space reservation and usage on the storage volume.",
             "id": "SnapshotReservationDetail",
@@ -3208,6 +3065,12 @@
             "properties": {},
             "type": "object"
         },
+        "StartInstanceResponse": {
+            "description": "Response message from starting a server.",
+            "id": "StartInstanceResponse",
+            "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",
@@ -3241,6 +3104,12 @@
             "properties": {},
             "type": "object"
         },
+        "StopInstanceResponse": {
+            "description": "Response message from stopping a server.",
+            "id": "StopInstanceResponse",
+            "properties": {},
+            "type": "object"
+        },
         "SubmitProvisioningConfigRequest": {
             "description": "Request for SubmitProvisioningConfig.",
             "id": "SubmitProvisioningConfigRequest",
@@ -3684,9 +3553,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Bare Metal Solution API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/batch__v1.json b/discovery/googleapis/batch__v1.json
index 90c0a1d..c865b74 100644
--- a/discovery/googleapis/batch__v1.json
+++ b/discovery/googleapis/batch__v1.json
@@ -24,6 +24,13 @@
     "name": "batch",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230621",
+    "rootUrl": "https://batch.googleapis.com/",
+    "servicePath": "",
+    "title": "Batch API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -554,8 +560,6 @@
             }
         }
     },
-    "revision": "20230503",
-    "rootUrl": "https://batch.googleapis.com/",
     "schemas": {
         "Accelerator": {
             "description": "Accelerator describes Compute Engine accelerators to be attached to the VM.",
@@ -592,6 +596,64 @@
             },
             "type": "object"
         },
+        "AgentContainer": {
+            "description": "Container runnable representation on the agent side.",
+            "id": "AgentContainer",
+            "properties": {
+                "commands": {
+                    "description": "Overrides the `CMD` specified in the container. If there is an ENTRYPOINT (either in the container image or with the entrypoint field below) then commands are appended as arguments to the ENTRYPOINT.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "entrypoint": {
+                    "description": "Overrides the `ENTRYPOINT` specified in the container.",
+                    "type": "string"
+                },
+                "imageUri": {
+                    "description": "The URI to pull the container image from.",
+                    "type": "string"
+                },
+                "options": {
+                    "description": "Arbitrary additional options to include in the \"docker run\" command when running this container, e.g. \"--network host\".",
+                    "type": "string"
+                },
+                "volumes": {
+                    "description": "Volumes to mount (bind mount) from the host machine files or directories into the container, formatted to match docker run's --volume option, e.g. /foo:/bar, or /foo:/bar:ro",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AgentEnvironment": {
+            "description": "AgentEnvironment is the Environment representation between Agent and CLH communication. The environment is used in both task level and agent level.",
+            "id": "AgentEnvironment",
+            "properties": {
+                "encryptedVariables": {
+                    "$ref": "AgentKMSEnvMap",
+                    "description": "An encrypted JSON dictionary where the key/value pairs correspond to environment variable names and their values."
+                },
+                "secretVariables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "A map of environment variable names to Secret Manager secret names. The VM will access the named secrets to set the value of each environment variable.",
+                    "type": "object"
+                },
+                "variables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "A map of environment variable names to values.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
         "AgentInfo": {
             "description": "VM Agent Info.",
             "id": "AgentInfo",
@@ -635,6 +697,21 @@
             },
             "type": "object"
         },
+        "AgentKMSEnvMap": {
+            "description": "AgentKMSEnvMap contains the encrypted key/value pair to be used in the environment on the Agent side.",
+            "id": "AgentKMSEnvMap",
+            "properties": {
+                "cipherText": {
+                    "description": "The value of the cipherText response from the `encrypt` method.",
+                    "type": "string"
+                },
+                "keyName": {
+                    "description": "The name of the KMS key that will be used to decrypt the cipher text.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "AgentMetadata": {
             "description": "VM Agent Metadata.",
             "id": "AgentMetadata",
@@ -683,10 +760,29 @@
             },
             "type": "object"
         },
+        "AgentScript": {
+            "description": "Script runnable representation on the agent side.",
+            "id": "AgentScript",
+            "properties": {
+                "path": {
+                    "description": "Script file path on the host VM. To specify an interpreter, please add a `#!`(also known as [shebang line](https://en.wikipedia.org/wiki/Shebang_(Unix))) as the first line of the file.(For example, to execute the script using bash, `#!/bin/bash` should be the first line of the file. To execute the script using`Python3`, `#!/usr/bin/env python3` should be the first line of the file.) Otherwise, the file will by default be excuted by `/bin/sh`.",
+                    "type": "string"
+                },
+                "text": {
+                    "description": "Shell script text. To specify an interpreter, please add a `#!\\n` at the beginning of the text.(For example, to execute the script using bash, `#!/bin/bash\\n` should be added. To execute the script using`Python3`, `#!/usr/bin/env python3\\n` should be added.) Otherwise, the script will by default be excuted by `/bin/sh`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "AgentTask": {
             "description": "TODO(b/182501497) The message needs to be redefined when the Agent API server updates data in storage per the backend design.",
             "id": "AgentTask",
             "properties": {
+                "agentTaskSpec": {
+                    "$ref": "AgentTaskSpec",
+                    "description": "AgentTaskSpec is the taskSpec representation between Agent and CLH communication. This field will replace the TaskSpec field above in future to have a better separation between user-facaing API and internal API."
+                },
                 "intendedState": {
                     "description": "The intended state of the task.",
                     "enum": [
@@ -710,7 +806,7 @@
                 },
                 "spec": {
                     "$ref": "TaskSpec",
-                    "description": "Task Spec."
+                    "description": "Task Spec. This field will be replaced by agent_task_spec below in future."
                 },
                 "status": {
                     "$ref": "TaskStatus",
@@ -757,6 +853,65 @@
             },
             "type": "object"
         },
+        "AgentTaskRunnable": {
+            "description": "AgentTaskRunnable is the Runnable representation between Agent and CLH communication.",
+            "id": "AgentTaskRunnable",
+            "properties": {
+                "alwaysRun": {
+                    "description": "By default, after a Runnable fails, no further Runnable are executed. This flag indicates that this Runnable must be run even if the Task has already failed. This is useful for Runnables that copy output files off of the VM or for debugging. The always_run flag does not override the Task's overall max_run_duration. If the max_run_duration has expired then no further Runnables will execute, not even always_run Runnables.",
+                    "type": "boolean"
+                },
+                "background": {
+                    "description": "This flag allows a Runnable to continue running in the background while the Task executes subsequent Runnables. This is useful to provide services to other Runnables (or to provide debugging support tools like SSH servers).",
+                    "type": "boolean"
+                },
+                "container": {
+                    "$ref": "AgentContainer",
+                    "description": "Container runnable."
+                },
+                "environment": {
+                    "$ref": "AgentEnvironment",
+                    "description": "Environment variables for this Runnable (overrides variables set for the whole Task or TaskGroup)."
+                },
+                "ignoreExitStatus": {
+                    "description": "Normally, a non-zero exit status causes the Task to fail. This flag allows execution of other Runnables to continue instead.",
+                    "type": "boolean"
+                },
+                "script": {
+                    "$ref": "AgentScript",
+                    "description": "Script runnable."
+                },
+                "timeout": {
+                    "description": "Timeout for this Runnable.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AgentTaskSpec": {
+            "description": "AgentTaskSpec is the user's TaskSpec representation between Agent and CLH communication.",
+            "id": "AgentTaskSpec",
+            "properties": {
+                "environment": {
+                    "$ref": "AgentEnvironment",
+                    "description": "Environment variables to set before running the Task."
+                },
+                "maxRunDuration": {
+                    "description": "Maximum duration the task should run. The task will be killed and marked as FAILED if over this limit.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "runnables": {
+                    "description": "AgentTaskRunnable is runanbles that will be executed on the agent.",
+                    "items": {
+                        "$ref": "AgentTaskRunnable"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "AgentTimingInfo": {
             "description": "VM timing information",
             "id": "AgentTimingInfo",
@@ -927,7 +1082,7 @@
                     "type": "string"
                 },
                 "image": {
-                    "description": "Name of a public or custom image used as the data source. For example, the following are all valid URLs: * Specify the image by its family name: projects/{project}/global/images/family/{image_family} * Specify the image version: projects/{project}/global/images/{image_version} You can also use Batch customized image in short names. The following image values are supported for a boot disk: * \"batch-debian\": use Batch Debian images. * \"batch-centos\": use Batch CentOS images. * \"batch-cos\": use Batch Container-Optimized images.",
+                    "description": "Name of a public or custom image used as the data source. For example, the following are all valid URLs: * Specify the image by its family name: projects/{project}/global/images/family/{image_family} * Specify the image version: projects/{project}/global/images/{image_version} You can also use Batch customized image in short names. The following image values are supported for a boot disk: * \"batch-debian\": use Batch Debian images. * \"batch-centos\": use Batch CentOS images. * \"batch-cos\": use Batch Container-Optimized images. * \"batch-hpc-centos\": use Batch HPC CentOS images.",
                     "type": "string"
                 },
                 "sizeGb": {
@@ -1015,7 +1170,7 @@
                     "type": "string"
                 },
                 "minCpuPlatform": {
-                    "description": "The minimum CPU platform. See https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform. Not yet implemented.",
+                    "description": "The minimum CPU platform. See https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform.",
                     "type": "string"
                 },
                 "provisioningModel": {
@@ -1196,7 +1351,7 @@
                         "DELETION_IN_PROGRESS"
                     ],
                     "enumDescriptions": [
-                        "",
+                        "Job state unspecified.",
                         "Job is admitted (validated and persisted) and waiting for resources.",
                         "Job is scheduled to run as soon as resource allocation is ready. The resource allocation may happen at a later time but with a high chance to succeed.",
                         "Resource allocation has been successful. At least one Task in the Job is RUNNING.",
@@ -1436,7 +1591,7 @@
                         "DELETION_IN_PROGRESS"
                     ],
                     "enumDescriptions": [
-                        "",
+                        "Job state unspecified.",
                         "Job is admitted (validated and persisted) and waiting for resources.",
                         "Job is scheduled to run as soon as resource allocation is ready. The resource allocation may happen at a later time but with a high chance to succeed.",
                         "Resource allocation has been successful. At least one Task in the Job is RUNNING.",
@@ -1852,7 +2007,7 @@
             "type": "object"
         },
         "TaskGroup": {
-            "description": "A TaskGroup contains one or multiple Tasks that share the same Runnable but with different runtime parameters.",
+            "description": "A TaskGroup defines one or more Tasks that all share the same TaskSpec.",
             "id": "TaskGroup",
             "properties": {
                 "name": {
@@ -1873,6 +2028,20 @@
                     "description": "When true, Batch will populate a file with a list of all VMs assigned to the TaskGroup and set the BATCH_HOSTS_FILE environment variable to the path of that file. Defaults to false.",
                     "type": "boolean"
                 },
+                "schedulingPolicy": {
+                    "description": "Scheduling policy for Tasks in the TaskGroup. The default value is AS_SOON_AS_POSSIBLE.",
+                    "enum": [
+                        "SCHEDULING_POLICY_UNSPECIFIED",
+                        "AS_SOON_AS_POSSIBLE",
+                        "IN_ORDER"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Run Tasks as soon as resources are available. Tasks might be executed in parallel depending on parallelism and task_count values.",
+                        "Run Tasks sequentially with increased task index."
+                    ],
+                    "type": "string"
+                },
                 "taskCount": {
                     "description": "Number of Tasks in the TaskGroup. Default is 1.",
                     "format": "int64",
@@ -1884,7 +2053,7 @@
                     "type": "string"
                 },
                 "taskEnvironments": {
-                    "description": "An array of environment variable mappings, which are passed to Tasks with matching indices. If task_environments is used then task_count should not be specified in the request (and will be ignored). Task count will be the length of task_environments. Tasks get a BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in addition to any environment variables set in task_environments, specifying the number of Tasks in the Task's parent TaskGroup, and the specific Task's index in the TaskGroup (0 through BATCH_TASK_COUNT - 1). task_environments supports up to 200 entries.",
+                    "description": "An array of environment variable mappings, which are passed to Tasks with matching indices. If task_environments is used then task_count should not be specified in the request (and will be ignored). Task count will be the length of task_environments. Tasks get a BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in addition to any environment variables set in task_environments, specifying the number of Tasks in the Task's parent TaskGroup, and the specific Task's index in the TaskGroup (0 through BATCH_TASK_COUNT - 1).",
                     "items": {
                         "$ref": "Environment"
                     },
@@ -2038,9 +2207,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Batch API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/beyondcorp__v1.json b/discovery/googleapis/beyondcorp__v1.json
index 0ebe1eb..d2aa3ef 100644
--- a/discovery/googleapis/beyondcorp__v1.json
+++ b/discovery/googleapis/beyondcorp__v1.json
@@ -24,6 +24,13 @@
     "name": "beyondcorp",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230616",
+    "rootUrl": "https://beyondcorp.googleapis.com/",
+    "servicePath": "",
+    "title": "BeyondCorp API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,197 +108,131 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "organizations": {
             "resources": {
                 "locations": {
                     "resources": {
-                        "global": {
-                            "resources": {
-                                "tenants": {
-                                    "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/organizations/{organizationsId}/locations/global/tenants/{tenantsId}:getIamPolicy",
-                                            "httpMethod": "GET",
-                                            "id": "beyondcorp.organizations.locations.global.tenants.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 [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
-                                                    "location": "path",
-                                                    "pattern": "^organizations/[^/]+/locations/global/tenants/[^/]+$",
-                                                    "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/organizations/{organizationsId}/locations/global/tenants/{tenantsId}:setIamPolicy",
-                                            "httpMethod": "POST",
-                                            "id": "beyondcorp.organizations.locations.global.tenants.setIamPolicy",
-                                            "parameterOrder": [
-                                                "resource"
-                                            ],
-                                            "parameters": {
-                                                "resource": {
-                                                    "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
-                                                    "location": "path",
-                                                    "pattern": "^organizations/[^/]+/locations/global/tenants/[^/]+$",
-                                                    "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/organizations/{organizationsId}/locations/global/tenants/{tenantsId}:testIamPermissions",
-                                            "httpMethod": "POST",
-                                            "id": "beyondcorp.organizations.locations.global.tenants.testIamPermissions",
-                                            "parameterOrder": [
-                                                "resource"
-                                            ],
-                                            "parameters": {
-                                                "resource": {
-                                                    "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
-                                                    "location": "path",
-                                                    "pattern": "^organizations/[^/]+/locations/global/tenants/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+resource}:testIamPermissions",
-                                            "request": {
-                                                "$ref": "GoogleIamV1TestIamPermissionsRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "GoogleIamV1TestIamPermissionsResponse"
-                                            },
-                                            "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/organizations/{organizationsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+                                    "httpMethod": "POST",
+                                    "id": "beyondcorp.organizations.locations.operations.cancel",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource to be cancelled.",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
                                         }
                                     },
-                                    "resources": {
-                                        "proxyConfigs": {
-                                            "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/organizations/{organizationsId}/locations/global/tenants/{tenantsId}/proxyConfigs/{proxyConfigsId}:getIamPolicy",
-                                                    "httpMethod": "GET",
-                                                    "id": "beyondcorp.organizations.locations.global.tenants.proxyConfigs.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 [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
-                                                            "location": "path",
-                                                            "pattern": "^organizations/[^/]+/locations/global/tenants/[^/]+/proxyConfigs/[^/]+$",
-                                                            "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/organizations/{organizationsId}/locations/global/tenants/{tenantsId}/proxyConfigs/{proxyConfigsId}:setIamPolicy",
-                                                    "httpMethod": "POST",
-                                                    "id": "beyondcorp.organizations.locations.global.tenants.proxyConfigs.setIamPolicy",
-                                                    "parameterOrder": [
-                                                        "resource"
-                                                    ],
-                                                    "parameters": {
-                                                        "resource": {
-                                                            "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
-                                                            "location": "path",
-                                                            "pattern": "^organizations/[^/]+/locations/global/tenants/[^/]+/proxyConfigs/[^/]+$",
-                                                            "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/organizations/{organizationsId}/locations/global/tenants/{tenantsId}/proxyConfigs/{proxyConfigsId}:testIamPermissions",
-                                                    "httpMethod": "POST",
-                                                    "id": "beyondcorp.organizations.locations.global.tenants.proxyConfigs.testIamPermissions",
-                                                    "parameterOrder": [
-                                                        "resource"
-                                                    ],
-                                                    "parameters": {
-                                                        "resource": {
-                                                            "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
-                                                            "location": "path",
-                                                            "pattern": "^organizations/[^/]+/locations/global/tenants/[^/]+/proxyConfigs/[^/]+$",
-                                                            "required": true,
-                                                            "type": "string"
-                                                        }
-                                                    },
-                                                    "path": "v1/{+resource}:testIamPermissions",
-                                                    "request": {
-                                                        "$ref": "GoogleIamV1TestIamPermissionsRequest"
-                                                    },
-                                                    "response": {
-                                                        "$ref": "GoogleIamV1TestIamPermissionsResponse"
-                                                    },
-                                                    "scopes": [
-                                                        "https://www.googleapis.com/auth/cloud-platform"
-                                                    ]
-                                                }
-                                            }
+                                    "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/organizations/{organizationsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "beyondcorp.organizations.locations.operations.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource to be deleted.",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/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/organizations/{organizationsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "GET",
+                                    "id": "beyondcorp.organizations.locations.operations.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource.",
+                                            "location": "path",
+                                            "pattern": "^organizations/[^/]+/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`.",
+                                    "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/operations",
+                                    "httpMethod": "GET",
+                                    "id": "beyondcorp.organizations.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": "^organizations/[^/]+/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"
+                                    ]
                                 }
                             }
                         }
@@ -1588,8 +1529,6 @@
             }
         }
     },
-    "revision": "20230503",
-    "rootUrl": "https://beyondcorp.googleapis.com/",
     "schemas": {
         "AllocatedConnection": {
             "description": "Allocated connection of the AppGateway.",
@@ -2591,94 +2530,6 @@
             },
             "type": "object"
         },
-        "GoogleCloudBeyondcorpClientconnectorservicesV1alphaClientConnectorServiceOperationMetadata": {
-            "description": "Represents the metadata of the long-running operation.",
-            "id": "GoogleCloudBeyondcorpClientconnectorservicesV1alphaClientConnectorServiceOperationMetadata",
-            "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"
-        },
-        "GoogleCloudBeyondcorpClientgatewaysV1alphaClientGatewayOperationMetadata": {
-            "description": "Represents the metadata of the long-running operation.",
-            "id": "GoogleCloudBeyondcorpClientgatewaysV1alphaClientGatewayOperationMetadata",
-            "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 been cancelled successfully 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"
-        },
         "GoogleCloudBeyondcorpConnectionsV1alphaConnectionOperationMetadata": {
             "description": "Represents the metadata of the long-running operation.",
             "id": "GoogleCloudBeyondcorpConnectionsV1alphaConnectionOperationMetadata",
@@ -3263,9 +3114,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "BeyondCorp API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/bigquery__v2.json b/discovery/googleapis/bigquery__v2.json
index fa05356..b8d6a8b 100644
--- a/discovery/googleapis/bigquery__v2.json
+++ b/discovery/googleapis/bigquery__v2.json
@@ -41,6 +41,12 @@
     "name": "bigquery",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230624",
+    "rootUrl": "https://bigquery.googleapis.com/",
+    "servicePath": "bigquery/v2/",
+    "title": "BigQuery API",
+    "version": "v2",
     "parameters": {
         "alt": {
             "default": "json",
@@ -86,7 +92,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "datasets": {
             "methods": {
@@ -1010,7 +1015,7 @@
                             "type": "string"
                         },
                         "filter": {
-                            "description": "If set, then only the Routines matching this filter are returned. The current supported form is either \"routine_type:\" or \"routineType:\", where is a RoutineType enum. Example: \"routineType:SCALAR_FUNCTION\".",
+                            "description": "If set, then only the Routines matching this filter are returned. The supported format is `routineType:{RoutineType}`, where `{RoutineType}` is a RoutineType enum. For example: `routineType:SCALAR_FUNCTION`.",
                             "location": "query",
                             "type": "string"
                         },
@@ -1709,8 +1714,6 @@
             }
         }
     },
-    "revision": "20230422",
-    "rootUrl": "https://bigquery.googleapis.com/",
     "schemas": {
         "AggregateClassificationMetrics": {
             "description": "Aggregate metrics for classification/classifier models. For multi-class models, the metrics are either macro-averaged or micro-averaged. When macro-averaged, the metrics are calculated for each label and then an unweighted average is taken of those values. When micro-averaged, the metric is calculated globally by counting the total number of correctly predicted rows.",
@@ -3104,7 +3107,7 @@
             "id": "EncryptionConfiguration",
             "properties": {
                 "kmsKeyName": {
-                    "description": "[Optional] Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key.",
+                    "description": "Optional. Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key.",
                     "type": "string"
                 }
             },
@@ -3432,6 +3435,10 @@
                     },
                     "type": "array"
                 },
+                "fileSetSpecType": {
+                    "description": "[Optional] Specifies how source URIs are interpreted for constructing the file set to load. By default source URIs are expanded against the underlying storage. Other options include specifying manifest files. Only applicable to object storage systems.",
+                    "type": "string"
+                },
                 "googleSheetsOptions": {
                     "$ref": "GoogleSheetsOptions",
                     "description": "[Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS."
@@ -3444,6 +3451,10 @@
                     "description": "[Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don't match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.",
                     "type": "boolean"
                 },
+                "jsonOptions": {
+                    "$ref": "JsonOptions",
+                    "description": "Additional properties to set if `sourceFormat` is set to `NEWLINE_DELIMITED_JSON`."
+                },
                 "maxBadRecords": {
                     "description": "[Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.",
                     "format": "int32",
@@ -4167,6 +4178,10 @@
                     "description": "[Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence \"\\t\" to specify a tab separator. The default value is a comma (',').",
                     "type": "string"
                 },
+                "fileSetSpecType": {
+                    "description": "[Optional] Specifies how source URIs are interpreted for constructing the file set to load. By default source URIs are expanded against the underlying storage. Other options include specifying manifest files. Only applicable to object storage systems.",
+                    "type": "string"
+                },
                 "hivePartitioningOptions": {
                     "$ref": "HivePartitioningOptions",
                     "description": "[Optional] Options to configure hive partitioning support."
@@ -4912,6 +4927,16 @@
             "id": "JsonObject",
             "type": "object"
         },
+        "JsonOptions": {
+            "id": "JsonOptions",
+            "properties": {
+                "encoding": {
+                    "description": "[Optional] The character encoding of the data. The supported values are UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE. The default value is UTF-8.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "JsonValue": {
             "id": "JsonValue",
             "type": "any"
@@ -5172,8 +5197,8 @@
                         "Autoencoder model.",
                         "New name for the ARIMA model.",
                         "ARIMA with external regressors.",
-                        "Random Forest regressor model.",
-                        "Random Forest classifier model.",
+                        "Random forest regressor model.",
+                        "Random forest classifier model.",
                         "An imported TensorFlow Lite model.",
                         "An imported ONNX model."
                     ],
@@ -5239,15 +5264,15 @@
             "id": "ModelReference",
             "properties": {
                 "datasetId": {
-                    "description": "[Required] The ID of the dataset containing this model.",
+                    "description": "Required. The ID of the dataset containing this model.",
                     "type": "string"
                 },
                 "modelId": {
-                    "description": "[Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.",
+                    "description": "Required. The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.",
                     "type": "string"
                 },
                 "projectId": {
-                    "description": "[Required] The ID of the project containing this model.",
+                    "description": "Required. The ID of the project containing this model.",
                     "type": "string"
                 }
             },
@@ -5943,13 +5968,15 @@
                         "ROUTINE_TYPE_UNSPECIFIED",
                         "SCALAR_FUNCTION",
                         "PROCEDURE",
-                        "TABLE_VALUED_FUNCTION"
+                        "TABLE_VALUED_FUNCTION",
+                        "AGGREGATE_FUNCTION"
                     ],
                     "enumDescriptions": [
                         "",
-                        "Non-builtin permanent scalar function.",
+                        "Non-built-in persistent scalar function.",
                         "Stored procedure.",
-                        "Non-builtin permanent TVF."
+                        "Non-built-in persistent TVF.",
+                        "Non-built-in persistent aggregate function."
                     ],
                     "type": "string"
                 },
@@ -5968,15 +5995,15 @@
             "id": "RoutineReference",
             "properties": {
                 "datasetId": {
-                    "description": "[Required] The ID of the dataset containing this routine.",
+                    "description": "Required. The ID of the dataset containing this routine.",
                     "type": "string"
                 },
                 "projectId": {
-                    "description": "[Required] The ID of the project containing this routine.",
+                    "description": "Required. The ID of the project containing this routine.",
                     "type": "string"
                 },
                 "routineId": {
-                    "description": "[Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.",
+                    "description": "Required. The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.",
                     "type": "string"
                 }
             },
@@ -6036,19 +6063,19 @@
             "id": "RowAccessPolicyReference",
             "properties": {
                 "datasetId": {
-                    "description": "[Required] The ID of the dataset containing this row access policy.",
+                    "description": "Required. The ID of the dataset containing this row access policy.",
                     "type": "string"
                 },
                 "policyId": {
-                    "description": "[Required] The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.",
+                    "description": "Required. The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.",
                     "type": "string"
                 },
                 "projectId": {
-                    "description": "[Required] The ID of the project containing this row access policy.",
+                    "description": "Required. The ID of the project containing this row access policy.",
                     "type": "string"
                 },
                 "tableId": {
-                    "description": "[Required] The ID of the table containing this row access policy.",
+                    "description": "Required. The ID of the table containing this row access policy.",
                     "type": "string"
                 }
             },
@@ -6494,6 +6521,16 @@
                     "$ref": "ModelDefinition",
                     "description": "[Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run 'PREDICT' queries."
                 },
+                "numActiveLogicalBytes": {
+                    "description": "[Output-only] Number of logical bytes that are less than 90 days old.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "numActivePhysicalBytes": {
+                    "description": "[Output-only] Number of physical bytes less than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
+                    "format": "int64",
+                    "type": "string"
+                },
                 "numBytes": {
                     "description": "[Output-only] The size of this table in bytes, excluding any data in the streaming buffer.",
                     "format": "int64",
@@ -6504,6 +6541,21 @@
                     "format": "int64",
                     "type": "string"
                 },
+                "numLongTermLogicalBytes": {
+                    "description": "[Output-only] Number of logical bytes that are more than 90 days old.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "numLongTermPhysicalBytes": {
+                    "description": "[Output-only] Number of physical bytes more than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "numPartitions": {
+                    "description": "[Output-only] The number of partitions present in the table or materialized view. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
+                    "format": "int64",
+                    "type": "string"
+                },
                 "numPhysicalBytes": {
                     "description": "[Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.",
                     "format": "int64",
@@ -6514,42 +6566,17 @@
                     "format": "uint64",
                     "type": "string"
                 },
-                "num_active_logical_bytes": {
-                    "description": "[Output-only] Number of logical bytes that are less than 90 days old.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "num_active_physical_bytes": {
-                    "description": "[Output-only] Number of physical bytes less than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "num_long_term_logical_bytes": {
-                    "description": "[Output-only] Number of logical bytes that are more than 90 days old.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "num_long_term_physical_bytes": {
-                    "description": "[Output-only] Number of physical bytes more than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "num_partitions": {
-                    "description": "[Output-only] The number of partitions present in the table or materialized view. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "num_time_travel_physical_bytes": {
+                "numTimeTravelPhysicalBytes": {
                     "description": "[Output-only] Number of physical bytes used by time travel storage (deleted or changed data). This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
                     "format": "int64",
                     "type": "string"
                 },
-                "num_total_logical_bytes": {
+                "numTotalLogicalBytes": {
                     "description": "[Output-only] Total number of logical bytes in the table or materialized view.",
                     "format": "int64",
                     "type": "string"
                 },
-                "num_total_physical_bytes": {
+                "numTotalPhysicalBytes": {
                     "description": "[Output-only] The physical size of this table in bytes. This also includes storage used for time travel. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
                     "format": "int64",
                     "type": "string"
@@ -6579,6 +6606,10 @@
                     "$ref": "Streamingbuffer",
                     "description": "[Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer."
                 },
+                "tableConstraints": {
+                    "$ref": "TableConstraints",
+                    "description": "[Optional] The table constraints on the table."
+                },
                 "tableReference": {
                     "$ref": "TableReference",
                     "description": "[Required] Reference describing the ID of this table."
@@ -6607,6 +6638,64 @@
             },
             "type": "object"
         },
+        "TableConstraints": {
+            "id": "TableConstraints",
+            "properties": {
+                "foreignKeys": {
+                    "description": "[Optional] The foreign keys of the tables.",
+                    "items": {
+                        "properties": {
+                            "columnReferences": {
+                                "items": {
+                                    "properties": {
+                                        "referencedColumn": {
+                                            "type": "string"
+                                        },
+                                        "referencingColumn": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "type": "object"
+                                },
+                                "type": "array"
+                            },
+                            "name": {
+                                "type": "string"
+                            },
+                            "referencedTable": {
+                                "properties": {
+                                    "datasetId": {
+                                        "type": "string"
+                                    },
+                                    "projectId": {
+                                        "type": "string"
+                                    },
+                                    "tableId": {
+                                        "type": "string"
+                                    }
+                                },
+                                "type": "object"
+                            }
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "primaryKey": {
+                    "description": "[Optional] The primary key of the table.",
+                    "properties": {
+                        "columns": {
+                            "items": {
+                                "type": "string"
+                            },
+                            "type": "array"
+                        }
+                    },
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
         "TableDataInsertAllRequest": {
             "id": "TableDataInsertAllRequest",
             "properties": {
@@ -7001,6 +7090,10 @@
                     "description": "If true, detect step changes and make data adjustment in the input time series.",
                     "type": "boolean"
                 },
+                "approxGlobalFeatureContrib": {
+                    "description": "Whether to use approximate feature contribution method in XGBoost model explanation for global explain.",
+                    "type": "boolean"
+                },
                 "autoArima": {
                     "description": "Whether to enable auto ARIMA or not.",
                     "type": "boolean"
@@ -7577,10 +7670,6 @@
                     ],
                     "type": "string"
                 },
-                "preserveInputStructs": {
-                    "description": "Whether to preserve the input structs in output feature names. Suppose there is a struct A with field b. When false (default), the output feature name is A_b. When true, the output feature name is A.b.",
-                    "type": "boolean"
-                },
                 "sampledShapleyNumPaths": {
                     "description": "Number of paths for the sampled Shapley explain method.",
                     "format": "int64",
@@ -7776,8 +7865,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "bigquery/v2/",
-    "title": "BigQuery API",
-    "version": "v2"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/bigquerydatatransfer__v1.json b/discovery/googleapis/bigquerydatatransfer__v1.json
index b17cc9e..b2b2a96 100644
--- a/discovery/googleapis/bigquerydatatransfer__v1.json
+++ b/discovery/googleapis/bigquerydatatransfer__v1.json
@@ -30,6 +30,13 @@
     "name": "bigquerydatatransfer",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230708",
+    "rootUrl": "https://bigquerydatatransfer.googleapis.com/",
+    "servicePath": "",
+    "title": "BigQuery Data Transfer API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -107,7 +114,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "methods": {
@@ -1338,8 +1344,6 @@
             }
         }
     },
-    "revision": "20230506",
-    "rootUrl": "https://bigquerydatatransfer.googleapis.com/",
     "schemas": {
         "CheckValidCredsRequest": {
             "description": "A request to determine whether the user has valid credentials. This method is used to limit the number of OAuth popups in the user interface. The user id is inferred from the API call context. If the data source has the Google+ authorization type, this method returns false, as it cannot be determined whether the credentials are already valid merely based on the user id.",
@@ -2113,9 +2117,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "BigQuery Data Transfer API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/bigqueryreservation__v1.json b/discovery/googleapis/bigqueryreservation__v1.json
index 50d1d0b..9911821 100644
--- a/discovery/googleapis/bigqueryreservation__v1.json
+++ b/discovery/googleapis/bigqueryreservation__v1.json
@@ -27,6 +27,13 @@
     "name": "bigqueryreservation",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230706",
+    "rootUrl": "https://bigqueryreservation.googleapis.com/",
+    "servicePath": "",
+    "title": "BigQuery Reservation API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -821,8 +827,6 @@
             }
         }
     },
-    "revision": "20230509",
-    "rootUrl": "https://bigqueryreservation.googleapis.com/",
     "schemas": {
         "Assignment": {
             "description": "An assignment allows a project to submit jobs of a certain type using slots from the specified reservation.",
@@ -957,6 +961,11 @@
                     "description": "Output only. For FAILED commitment plan, provides the reason of failure.",
                     "readOnly": true
                 },
+                "isFlatRate": {
+                    "description": "Output only. If true, the commitment is a flat-rate commitment, otherwise, it's an edition commitment.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
                 "multiRegionAuxiliary": {
                     "description": "Applicable only for commitments located within one of the BigQuery multi-regions (US or EU). If set to true, this commitment is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this commitment is placed in the organization's default region. NOTE: this is a preview feature. Project must be allow-listed in order to set this field.",
                     "type": "boolean"
@@ -1184,7 +1193,7 @@
                     "type": "string"
                 },
                 "slotCapacity": {
-                    "description": "Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false. If edition is EDITION_UNSPECIFIED and total slot_capacity of the reservation and its siblings exceeds the total slot_count of all capacity commitments, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. If edition is any value but EDITION_UNSPECIFIED, then the above requirement is not needed. The total slot_capacity of the reservation and its siblings may exceed the total slot_count of capacity commitments. In that case, the exceeding slots will be charged with the autoscale SKU. You can increase the number of baseline slots in a reservation every few minutes. If you want to decrease your baseline slots, you are limited to once an hour if you have recently changed your baseline slot capacity and your baseline slots exceed your committed slots. Otherwise, you can decrease your baseline slots every few minutes. NOTE: for reservations in US or EU multi-regions, slot capacity constraints are checked separately for default and auxiliary regions. See multi_region_auxiliary flag for more details.",
+                    "description": "Baseline slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false, or autoscaling is enabled. If edition is EDITION_UNSPECIFIED and total slot_capacity of the reservation and its siblings exceeds the total slot_count of all capacity commitments, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. If edition is any value but EDITION_UNSPECIFIED, then the above requirement is not needed. The total slot_capacity of the reservation and its siblings may exceed the total slot_count of capacity commitments. In that case, the exceeding slots will be charged with the autoscale SKU. You can increase the number of baseline slots in a reservation every few minutes. If you want to decrease your baseline slots, you are limited to once an hour if you have recently changed your baseline slot capacity and your baseline slots exceed your committed slots. Otherwise, you can decrease your baseline slots every few minutes. NOTE: for reservations in US or EU multi-regions, slot capacity constraints are checked separately for default and auxiliary regions. See multi_region_auxiliary flag for more details.",
                     "format": "int64",
                     "type": "string"
                 },
@@ -1306,9 +1315,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "BigQuery Reservation API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/bigtableadmin__v2.json b/discovery/googleapis/bigtableadmin__v2.json
index 24eeaac..2655826 100644
--- a/discovery/googleapis/bigtableadmin__v2.json
+++ b/discovery/googleapis/bigtableadmin__v2.json
@@ -48,6 +48,13 @@
     "name": "bigtableadmin",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230619",
+    "rootUrl": "https://bigtableadmin.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Bigtable Admin API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -125,7 +132,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "operations": {
             "methods": {
@@ -1875,6 +1881,108 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 }
+                            },
+                            "resources": {
+                                "views": {
+                                    "methods": {
+                                        "getIamPolicy": {
+                                            "description": "Gets the access control policy for a Table resource. Returns an empty policy if the resource exists but does not have a policy set.",
+                                            "flatPath": "v2/projects/{projectsId}/instances/{instancesId}/tables/{tablesId}/views/{viewsId}:getIamPolicy",
+                                            "httpMethod": "POST",
+                                            "id": "bigtableadmin.projects.instances.tables.views.getIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/tables/[^/]+/views/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+resource}:getIamPolicy",
+                                            "request": {
+                                                "$ref": "GetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/bigtable.admin",
+                                                "https://www.googleapis.com/auth/bigtable.admin.table",
+                                                "https://www.googleapis.com/auth/cloud-bigtable.admin",
+                                                "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setIamPolicy": {
+                                            "description": "Sets the access control policy on a Table resource. Replaces any existing policy.",
+                                            "flatPath": "v2/projects/{projectsId}/instances/{instancesId}/tables/{tablesId}/views/{viewsId}:setIamPolicy",
+                                            "httpMethod": "POST",
+                                            "id": "bigtableadmin.projects.instances.tables.views.setIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/tables/[^/]+/views/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+resource}:setIamPolicy",
+                                            "request": {
+                                                "$ref": "SetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/bigtable.admin",
+                                                "https://www.googleapis.com/auth/bigtable.admin.table",
+                                                "https://www.googleapis.com/auth/cloud-bigtable.admin",
+                                                "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "testIamPermissions": {
+                                            "description": "Returns permissions that the caller has on the specified table resource.",
+                                            "flatPath": "v2/projects/{projectsId}/instances/{instancesId}/tables/{tablesId}/views/{viewsId}:testIamPermissions",
+                                            "httpMethod": "POST",
+                                            "id": "bigtableadmin.projects.instances.tables.views.testIamPermissions",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/tables/[^/]+/views/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+resource}:testIamPermissions",
+                                            "request": {
+                                                "$ref": "TestIamPermissionsRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "TestIamPermissionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/bigtable.admin",
+                                                "https://www.googleapis.com/auth/bigtable.admin.table",
+                                                "https://www.googleapis.com/auth/cloud-bigtable.admin",
+                                                "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                }
                             }
                         }
                     }
@@ -1964,8 +2072,6 @@
             }
         }
     },
-    "revision": "20230426",
-    "rootUrl": "https://bigtableadmin.googleapis.com/",
     "schemas": {
         "AppProfile": {
             "description": "A configuration object describing how Cloud Bigtable should treat traffic from a particular end user application.",
@@ -2195,6 +2301,18 @@
             },
             "type": "object"
         },
+        "ChangeStreamConfig": {
+            "description": "Change stream configuration.",
+            "id": "ChangeStreamConfig",
+            "properties": {
+                "retentionPeriod": {
+                    "description": "How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CheckConsistencyRequest": {
             "description": "Request message for google.bigtable.admin.v2.BigtableTableAdmin.CheckConsistency",
             "id": "CheckConsistencyRequest",
@@ -2993,7 +3111,7 @@
             "type": "object"
         },
         "Location": {
-            "description": "A resource that represents Google Cloud location.",
+            "description": "A resource that represents a Google Cloud location.",
             "id": "Location",
             "properties": {
                 "displayName": {
@@ -3053,6 +3171,10 @@
             "description": "Request message for google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies",
             "id": "ModifyColumnFamiliesRequest",
             "properties": {
+                "ignoreWarnings": {
+                    "description": "If true, ignore safety checks when modifying the column families.",
+                    "type": "boolean"
+                },
                 "modifications": {
                     "description": "Required. Modifications to be atomically applied to the specified table's families. Entries are applied in order, meaning that earlier modifications can be masked by later ones (in the case of repeated updates to the same family, for example).",
                     "items": {
@@ -3379,6 +3501,10 @@
             "description": "A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.",
             "id": "Table",
             "properties": {
+                "changeStreamConfig": {
+                    "$ref": "ChangeStreamConfig",
+                    "description": "If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."
+                },
                 "clusterStates": {
                     "additionalProperties": {
                         "$ref": "ClusterState"
@@ -3625,9 +3751,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Bigtable Admin API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/billingbudgets__v1.json b/discovery/googleapis/billingbudgets__v1.json
index 6d39ecc..ce6ee32 100644
--- a/discovery/googleapis/billingbudgets__v1.json
+++ b/discovery/googleapis/billingbudgets__v1.json
@@ -27,6 +27,13 @@
     "name": "billingbudgets",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230704",
+    "rootUrl": "https://billingbudgets.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Billing Budget API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "billingAccounts": {
             "resources": {
@@ -268,8 +274,6 @@
             }
         }
     },
-    "revision": "20230507",
-    "rootUrl": "https://billingbudgets.googleapis.com/",
     "schemas": {
         "GoogleCloudBillingBudgetsV1Budget": {
             "description": "A budget is a plan that describes what you expect to spend on Cloud projects, plus the rules to execute as spend is tracked against that plan, (for example, send an alert when 90% of the target spend is met). The budget time period is configurable, with options such as month (default), quarter, year, or custom time period.",
@@ -404,6 +408,13 @@
                     },
                     "type": "array"
                 },
+                "resourceAncestors": {
+                    "description": "Optional. A set of folder and organization names of the form `folders/{folderId}` or `organizations/{organizationId}`, specifying that usage from only this set of folders and organizations should be included in the budget. If omitted, the budget includes all usage that the billing account pays for. If the folder or organization contains projects that are paid for by a different Cloud Billing account, the budget *doesn't* apply to those projects.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "services": {
                     "description": "Optional. A set of services of the form `services/{service_id}`, specifying that usage from only this set of services should be included in the budget. If omitted, the report includes usage for all the services. The service names are available through the Catalog API: https://cloud.google.com/billing/v1/how-tos/catalog-api.",
                     "items": {
@@ -546,9 +557,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Billing Budget API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/binaryauthorization__v1.json b/discovery/googleapis/binaryauthorization__v1.json
index ecc690b..f72e34d 100644
--- a/discovery/googleapis/binaryauthorization__v1.json
+++ b/discovery/googleapis/binaryauthorization__v1.json
@@ -24,6 +24,13 @@
     "name": "binaryauthorization",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230630",
+    "rootUrl": "https://binaryauthorization.googleapis.com/",
+    "servicePath": "",
+    "title": "Binary Authorization API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "methods": {
@@ -549,8 +555,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://binaryauthorization.googleapis.com/",
     "schemas": {
         "AdmissionRule": {
             "description": "An admission rule specifies either that all container images used in a pod creation request must be attested to by one or more attestors, that all pod creations will be allowed, or that all pod creations will be denied. Images matching an admission allowlist pattern are exempted from admission rules and will never block a pod creation.",
@@ -1046,9 +1050,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Binary Authorization API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/blockchainnodeengine__v1.json b/discovery/googleapis/blockchainnodeengine__v1.json
new file mode 100644
index 0000000..6ec5e6f
--- /dev/null
+++ b/discovery/googleapis/blockchainnodeengine__v1.json
@@ -0,0 +1,942 @@
+{
+    "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://blockchainnodeengine.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Blockchain Node Engine",
+    "description": "",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/blockchain-node-engine",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "blockchainnodeengine:v1",
+    "kind": "discovery#restDescription",
+    "name": "blockchainnodeengine",
+    "ownerDomain": "google.com",
+    "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230705",
+    "rootUrl": "https://blockchainnodeengine.googleapis.com/",
+    "servicePath": "",
+    "title": "Blockchain Node Engine API",
+    "version": "v1",
+    "version_module": true,
+    "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"
+        }
+    },
+    "resources": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "get": {
+                            "description": "Gets information about a location.",
+                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+                            "httpMethod": "GET",
+                            "id": "blockchainnodeengine.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": "blockchainnodeengine.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": {
+                        "blockchainNodes": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a new blockchain node in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/blockchainNodes",
+                                    "httpMethod": "POST",
+                                    "id": "blockchainnodeengine.projects.locations.blockchainNodes.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "blockchainNodeId": {
+                                            "description": "Required. ID of the requesting object.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Value for parent.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "requestId": {
+                                            "description": "Optional. 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. The server will guarantee that for at least 60 minutes since the first request. 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"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/blockchainNodes",
+                                    "request": {
+                                        "$ref": "BlockchainNode"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a single blockchain node.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/blockchainNodes/{blockchainNodesId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "blockchainnodeengine.projects.locations.blockchainNodes.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The fully qualified name of the blockchain node to delete. e.g. `projects/my-project/locations/us-central1/blockchainNodes/my-node`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/blockchainNodes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "requestId": {
+                                            "description": "Optional. 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. 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 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"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets details of a single blockchain node.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/blockchainNodes/{blockchainNodesId}",
+                                    "httpMethod": "GET",
+                                    "id": "blockchainnodeengine.projects.locations.blockchainNodes.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The fully qualified name of the blockchain node to fetch. e.g. `projects/my-project/locations/us-central1/blockchainNodes/my-node`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/blockchainNodes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "BlockchainNode"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists blockchain nodes in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/blockchainNodes",
+                                    "httpMethod": "GET",
+                                    "id": "blockchainnodeengine.projects.locations.blockchainNodes.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Filtering results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "Hint for how to order the results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. Server may 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 the server should return.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Parent value for `ListNodesRequest`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/blockchainNodes",
+                                    "response": {
+                                        "$ref": "ListBlockchainNodesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates the parameters of a single blockchain node.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/blockchainNodes/{blockchainNodesId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "blockchainnodeengine.projects.locations.blockchainNodes.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The fully qualified name of the blockchain node. e.g. `projects/my-project/locations/us-central1/blockchainNodes/my-node`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/blockchainNodes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "requestId": {
+                                            "description": "Optional. 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. The server will guarantee that for at least 60 minutes since the first request. 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"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. Field mask is used to specify the fields to be overwritten in the Blockchain node resource by the update. The fields specified in the `update_mask` are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "BlockchainNode"
+                                    },
+                                    "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": "blockchainnodeengine.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": "GoogleProtobufEmpty"
+                                    },
+                                    "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": "blockchainnodeengine.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": "GoogleProtobufEmpty"
+                                    },
+                                    "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": "blockchainnodeengine.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`.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+                                    "httpMethod": "GET",
+                                    "id": "blockchainnodeengine.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"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "schemas": {
+        "BlockchainNode": {
+            "description": "A representation of a blockchain node.",
+            "id": "BlockchainNode",
+            "properties": {
+                "blockchainType": {
+                    "description": "Immutable. The blockchain type of the node.",
+                    "enum": [
+                        "BLOCKCHAIN_TYPE_UNSPECIFIED",
+                        "ETHEREUM"
+                    ],
+                    "enumDescriptions": [
+                        "Blockchain type has not been specified, but should be.",
+                        "The blockchain type is Ethereum."
+                    ],
+                    "type": "string"
+                },
+                "connectionInfo": {
+                    "$ref": "ConnectionInfo",
+                    "description": "Output only. The connection information used to interact with a blockchain node.",
+                    "readOnly": true
+                },
+                "createTime": {
+                    "description": "Output only. The timestamp at which the blockchain node was first created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "ethereumDetails": {
+                    "$ref": "EthereumDetails",
+                    "description": "Ethereum-specific blockchain node details."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "User-provided key-value pairs.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The fully qualified name of the blockchain node. e.g. `projects/my-project/locations/us-central1/blockchainNodes/my-node`.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output only. A status representing the state of the node.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATING",
+                        "DELETING",
+                        "RUNNING",
+                        "ERROR",
+                        "UPDATING",
+                        "REPAIRING",
+                        "RECONCILING"
+                    ],
+                    "enumDescriptions": [
+                        "The state has not been specified.",
+                        "The node has been requested and is in the process of being created.",
+                        "The existing node is undergoing deletion, but is not yet finished.",
+                        "The node is running and ready for use.",
+                        "The node is in an unexpected or errored state.",
+                        "The node is currently being updated.",
+                        "The node is currently being repaired.",
+                        "The node is currently being reconciled."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The timestamp at which the blockchain node was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CancelOperationRequest": {
+            "description": "The request message for Operations.CancelOperation.",
+            "id": "CancelOperationRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "ConnectionInfo": {
+            "description": "The connection information through which to interact with a blockchain node.",
+            "id": "ConnectionInfo",
+            "properties": {
+                "endpointInfo": {
+                    "$ref": "EndpointInfo",
+                    "description": "Output only. The endpoint information through which to interact with a blockchain node.",
+                    "readOnly": true
+                }
+            },
+            "type": "object"
+        },
+        "EndpointInfo": {
+            "description": "Contains endpoint information through which to interact with a blockchain node.",
+            "id": "EndpointInfo",
+            "properties": {
+                "jsonRpcApiEndpoint": {
+                    "description": "Output only. The assigned URL for the node JSON-RPC API endpoint.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "websocketsApiEndpoint": {
+                    "description": "Output only. The assigned URL for the node WebSockets API endpoint.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EthereumDetails": {
+            "description": "Ethereum-specific blockchain node details.",
+            "id": "EthereumDetails",
+            "properties": {
+                "additionalEndpoints": {
+                    "$ref": "EthereumEndpoints",
+                    "description": "Output only. Ethereum-specific endpoint information.",
+                    "readOnly": true
+                },
+                "apiEnableAdmin": {
+                    "description": "Immutable. Enables JSON-RPC access to functions in the `admin` namespace. Defaults to `false`.",
+                    "type": "boolean"
+                },
+                "apiEnableDebug": {
+                    "description": "Immutable. Enables JSON-RPC access to functions in the `debug` namespace. Defaults to `false`.",
+                    "type": "boolean"
+                },
+                "consensusClient": {
+                    "description": "Immutable. The consensus client.",
+                    "enum": [
+                        "CONSENSUS_CLIENT_UNSPECIFIED",
+                        "LIGHTHOUSE",
+                        "ERIGON_EMBEDDED_CONSENSUS_LAYER"
+                    ],
+                    "enumDescriptions": [
+                        "Consensus client has not been specified, but should be.",
+                        "Consensus client implementation written in Rust, maintained by Sigma Prime. See [Lighthouse - Sigma Prime](https://lighthouse.sigmaprime.io/) for details.",
+                        "Erigon's embedded consensus client embedded in the execution client. Note this option is not currently available when creating new blockchain nodes. See [Erigon on GitHub](https://github.com/ledgerwatch/erigon#embedded-consensus-layer) for details."
+                    ],
+                    "type": "string"
+                },
+                "executionClient": {
+                    "description": "Immutable. The execution client",
+                    "enum": [
+                        "EXECUTION_CLIENT_UNSPECIFIED",
+                        "GETH",
+                        "ERIGON"
+                    ],
+                    "enumDescriptions": [
+                        "Execution client has not been specified, but should be.",
+                        "Official Go implementation of the Ethereum protocol. See [go-ethereum](https://geth.ethereum.org/) for details.",
+                        "An implementation of Ethereum (execution client), on the efficiency frontier, written in Go. See [Erigon on GitHub](https://github.com/ledgerwatch/erigon) for details."
+                    ],
+                    "type": "string"
+                },
+                "gethDetails": {
+                    "$ref": "GethDetails",
+                    "description": "Details for the Geth execution client."
+                },
+                "network": {
+                    "description": "Immutable. The Ethereum environment being accessed.",
+                    "enum": [
+                        "NETWORK_UNSPECIFIED",
+                        "MAINNET",
+                        "TESTNET_GOERLI_PRATER",
+                        "TESTNET_SEPOLIA"
+                    ],
+                    "enumDescriptions": [
+                        "The network has not been specified, but should be.",
+                        "The Ethereum Mainnet.",
+                        "The Ethereum Testnet based on Goerli protocol.",
+                        "The Ethereum Testnet based on Sepolia/Bepolia protocol."
+                    ],
+                    "type": "string"
+                },
+                "nodeType": {
+                    "description": "Immutable. The type of Ethereum node.",
+                    "enum": [
+                        "NODE_TYPE_UNSPECIFIED",
+                        "LIGHT",
+                        "FULL",
+                        "ARCHIVE"
+                    ],
+                    "enumDescriptions": [
+                        "Node type has not been specified, but should be.",
+                        "An Ethereum node that only downloads Ethereum block headers.",
+                        "Keeps a complete copy of the blockchain data, and contributes to the network by receiving, validating, and forwarding transactions.",
+                        "Holds the same data as full node as well as all of the blockchain's history state data dating back to the Genesis Block."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EthereumEndpoints": {
+            "description": "Contains endpoint information specific to Ethereum nodes.",
+            "id": "EthereumEndpoints",
+            "properties": {
+                "beaconApiEndpoint": {
+                    "description": "Output only. The assigned URL for the node's Beacon API endpoint.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "beaconPrometheusMetricsApiEndpoint": {
+                    "description": "Output only. The assigned URL for the node's Beacon Prometheus metrics endpoint. See [Prometheus Metrics](https://lighthouse-book.sigmaprime.io/advanced_metrics.html) for more details.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "executionClientPrometheusMetricsApiEndpoint": {
+                    "description": "Output only. The assigned URL for the node's execution client's Prometheus metrics endpoint.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GethDetails": {
+            "description": "Options for the Geth execution client. See [Command-line Options](https://geth.ethereum.org/docs/fundamentals/command-line-options) for more details.",
+            "id": "GethDetails",
+            "properties": {
+                "garbageCollectionMode": {
+                    "description": "Immutable. Blockchain garbage collection mode.",
+                    "enum": [
+                        "GARBAGE_COLLECTION_MODE_UNSPECIFIED",
+                        "FULL",
+                        "ARCHIVE"
+                    ],
+                    "enumDescriptions": [
+                        "The garbage collection has not been specified.",
+                        "Configures Geth's garbage collection so that older data not needed for a full node is deleted. This is the default mode when creating a full node.",
+                        "Configures Geth's garbage collection so that old data is never deleted. This is the default mode when creating an archive node. This value can also be chosen when creating a full node in order to create a partial/recent archive node. See [Sync modes](https://geth.ethereum.org/docs/fundamentals/sync-modes) for more details."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleProtobufEmpty": {
+            "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); }",
+            "id": "GoogleProtobufEmpty",
+            "properties": {},
+            "type": "object"
+        },
+        "ListBlockchainNodesResponse": {
+            "description": "Message for response to listing blockchain nodes.",
+            "id": "ListBlockchainNodesResponse",
+            "properties": {
+                "blockchainNodes": {
+                    "description": "The list of nodes",
+                    "items": {
+                        "$ref": "BlockchainNode"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token identifying a page of results the server should return.",
+                    "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 a Google Cloud 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"
+        },
+        "OperationMetadata": {
+            "description": "Represents the metadata of the long-running operation.",
+            "id": "OperationMetadata",
+            "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 been cancelled successfully 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"
+        },
+        "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"
+        }
+    }
+}
diff --git a/discovery/googleapis/blogger__v3.json b/discovery/googleapis/blogger__v3.json
index 75db347..3410ef6 100644
--- a/discovery/googleapis/blogger__v3.json
+++ b/discovery/googleapis/blogger__v3.json
@@ -27,6 +27,12 @@
     "name": "blogger",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230708",
+    "rootUrl": "https://blogger.googleapis.com/",
+    "servicePath": "",
+    "title": "Blogger API",
+    "version": "v3",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +110,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "blogUserInfos": {
             "methods": {
@@ -1708,8 +1713,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://blogger.googleapis.com/",
     "schemas": {
         "Blog": {
             "id": "Blog",
@@ -2545,8 +2548,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Blogger API",
-    "version": "v3"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/books__v1.json b/discovery/googleapis/books__v1.json
index 60f5d4a..120678a 100644
--- a/discovery/googleapis/books__v1.json
+++ b/discovery/googleapis/books__v1.json
@@ -23,6 +23,13 @@
     "name": "books",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230629",
+    "rootUrl": "https://books.googleapis.com/",
+    "servicePath": "",
+    "title": "Books API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -100,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "bookshelves": {
             "methods": {
@@ -2670,8 +2676,6 @@
             }
         }
     },
-    "revision": "20230504",
-    "rootUrl": "https://books.googleapis.com/",
     "schemas": {
         "Annotation": {
             "id": "Annotation",
@@ -4997,9 +5001,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Books API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/businessprofileperformance__v1.json b/discovery/googleapis/businessprofileperformance__v1.json
index 375df5d..08489aa 100644
--- a/discovery/googleapis/businessprofileperformance__v1.json
+++ b/discovery/googleapis/businessprofileperformance__v1.json
@@ -15,6 +15,13 @@
     "name": "businessprofileperformance",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230710",
+    "rootUrl": "https://businessprofileperformance.googleapis.com/",
+    "servicePath": "",
+    "title": "Business Profile Performance API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "locations": {
             "methods": {
@@ -131,7 +137,7 @@
                                 "The number of times a direction request was requested to the business location.",
                                 "The number of times the business profile call button was clicked.",
                                 "The number of times the business profile website was clicked.",
-                                "The number of bookings received from the business profile.",
+                                "The number of bookings made from the business profile via Reserve with Google.",
                                 "The number of food orders received from the business profile.",
                                 "The number of clicks to view or interact with the menu content on the business profile. Multiple clicks by a unique user within a single day are counted as 1."
                             ],
@@ -223,7 +229,7 @@
                                 "The number of times a direction request was requested to the business location.",
                                 "The number of times the business profile call button was clicked.",
                                 "The number of times the business profile website was clicked.",
-                                "The number of bookings received from the business profile.",
+                                "The number of bookings made from the business profile via Reserve with Google.",
                                 "The number of food orders received from the business profile.",
                                 "The number of clicks to view or interact with the menu content on the business profile. Multiple clicks by a unique user within a single day are counted as 1."
                             ],
@@ -415,8 +421,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://businessprofileperformance.googleapis.com/",
     "schemas": {
         "DailyMetricTimeSeries": {
             "description": "Represents a single datapoint, where each datapoint is a DailyMetric-DailySubEntityType-TimeSeries tuple.",
@@ -448,7 +452,7 @@
                         "The number of times a direction request was requested to the business location.",
                         "The number of times the business profile call button was clicked.",
                         "The number of times the business profile website was clicked.",
-                        "The number of bookings received from the business profile.",
+                        "The number of bookings made from the business profile via Reserve with Google.",
                         "The number of food orders received from the business profile.",
                         "The number of clicks to view or interact with the menu content on the business profile. Multiple clicks by a unique user within a single day are counted as 1."
                     ],
@@ -669,9 +673,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Business Profile Performance API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/calendar__v3.json b/discovery/googleapis/calendar__v3.json
index 88fa01d..cc9a55a 100644
--- a/discovery/googleapis/calendar__v3.json
+++ b/discovery/googleapis/calendar__v3.json
@@ -35,6 +35,12 @@
     "name": "calendar",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230630",
+    "rootUrl": "https://www.googleapis.com/",
+    "servicePath": "calendar/v3/",
+    "title": "Calendar API",
+    "version": "v3",
     "parameters": {
         "alt": {
             "default": "json",
@@ -80,7 +86,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "acl": {
             "methods": {
@@ -1088,7 +1093,7 @@
                             "type": "string"
                         },
                         "eventTypes": {
-                            "description": "Event types to return. Optional. Possible values are: \n- \"default\" \n- \"focusTime\" \n- \"outOfOffice\"This parameter can be repeated multiple times to return events of different types. Currently, this is the only allowed value for this field: \n- [\"default\", \"focusTime\", \"outOfOffice\"] This value will be the default.\n\nIf you're enrolled in the Working Location developer preview program, in addition to the default value above you can also set the \"workingLocation\" event type: \n- [\"default\", \"focusTime\", \"outOfOffice\", \"workingLocation\"] \n- [\"workingLocation\"] Additional combinations of these 4 event types will be made available in later releases. Developer Preview.",
+                            "description": "Event types to return. Optional. Possible values are: \n- \"default\" \n- \"focusTime\" \n- \"outOfOffice\"This parameter can be repeated multiple times to return events of different types. Currently, this is the only allowed value for this field: \n- [\"default\", \"focusTime\", \"outOfOffice\"] This value is the default.\n\nIf you're enrolled in the Working Location developer preview program, in addition to the default value above you can also set the \"workingLocation\" event type: \n- [\"default\", \"focusTime\", \"outOfOffice\", \"workingLocation\"] \n- [\"workingLocation\"] Additional combinations of these four event types will be made available in later releases. Developer Preview.",
                             "location": "query",
                             "repeated": true,
                             "type": "string"
@@ -1491,7 +1496,7 @@
                             "type": "string"
                         },
                         "eventTypes": {
-                            "description": "Event types to return. Optional. Possible values are: \n- \"default\" \n- \"focusTime\" \n- \"outOfOffice\"This parameter can be repeated multiple times to return events of different types. Currently, this is the only allowed value for this field: \n- [\"default\", \"focusTime\", \"outOfOffice\"] This value will be the default.\n\nIf you're enrolled in the Working Location developer preview program, in addition to the default value above you can also set the \"workingLocation\" event type: \n- [\"default\", \"focusTime\", \"outOfOffice\", \"workingLocation\"] \n- [\"workingLocation\"] Additional combinations of these 4 event types will be made available in later releases. Developer Preview.",
+                            "description": "Event types to return. Optional. Possible values are: \n- \"default\" \n- \"focusTime\" \n- \"outOfOffice\"This parameter can be repeated multiple times to return events of different types. Currently, this is the only allowed value for this field: \n- [\"default\", \"focusTime\", \"outOfOffice\"] This value is the default.\n\nIf you're enrolled in the Working Location developer preview program, in addition to the default value above you can also set the \"workingLocation\" event type: \n- [\"default\", \"focusTime\", \"outOfOffice\", \"workingLocation\"] \n- [\"workingLocation\"] Additional combinations of these four event types will be made available in later releases. Developer Preview.",
                             "location": "query",
                             "repeated": true,
                             "type": "string"
@@ -1735,8 +1740,6 @@
             }
         }
     },
-    "revision": "20230406",
-    "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Acl": {
             "id": "Acl",
@@ -2626,7 +2629,7 @@
                 },
                 "workingLocationProperties": {
                     "$ref": "EventWorkingLocationProperties",
-                    "description": "Developer Preview: Working Location event data. Read-only."
+                    "description": "Working Location event data. Developer Preview."
                 }
             },
             "type": "object"
@@ -2785,6 +2788,10 @@
                         }
                     },
                     "type": "object"
+                },
+                "type": {
+                    "description": "Indicates what kind of location this is. Any details are specified in a sub-field of the specified name (but which may be missing if empty). Any other fields are ignored.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3041,8 +3048,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "calendar/v3/",
-    "title": "Calendar API",
-    "version": "v3"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/certificatemanager__v1.json b/discovery/googleapis/certificatemanager__v1.json
index 3d4ebf0..8ba0ec6 100644
--- a/discovery/googleapis/certificatemanager__v1.json
+++ b/discovery/googleapis/certificatemanager__v1.json
@@ -24,6 +24,13 @@
     "name": "certificatemanager",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230628",
+    "rootUrl": "https://certificatemanager.googleapis.com/",
+    "servicePath": "",
+    "title": "Certificate Manager API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -1278,8 +1284,6 @@
             }
         }
     },
-    "revision": "20230407",
-    "rootUrl": "https://certificatemanager.googleapis.com/",
     "schemas": {
         "AuthorizationAttemptInfo": {
             "description": "State of the latest attempt to authorize a domain for certificate issuance.",
@@ -1321,7 +1325,7 @@
                     ],
                     "enumDescriptions": [
                         "State is unspecified.",
-                        "Certificate provisioning for this domain is under way. GCP will attempt to authorize the domain.",
+                        "Certificate provisioning for this domain is under way. Google Cloud 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."
                     ],
@@ -1393,7 +1397,7 @@
                     ],
                     "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."
+                        "Certificates with scope EDGE_CACHE are special-purposed certificates, served from Edge Points of Presence. See https://cloud.google.com/vpc/docs/edge-locations."
                     ],
                     "type": "string"
                 },
@@ -1923,7 +1927,7 @@
             "type": "object"
         },
         "Location": {
-            "description": "A resource that represents Google Cloud Platform location.",
+            "description": "A resource that represents a Google Cloud location.",
             "id": "Location",
             "properties": {
                 "displayName": {
@@ -2229,9 +2233,5 @@
             },
             "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 5093c25..4663132 100644
--- a/discovery/googleapis/chat__v1.json
+++ b/discovery/googleapis/chat__v1.json
@@ -5,9 +5,18 @@
                 "https://www.googleapis.com/auth/chat.bot": {
                     "description": "Private Service: https://www.googleapis.com/auth/chat.bot"
                 },
+                "https://www.googleapis.com/auth/chat.delete": {
+                    "description": "Delete conversations and spaces & remove access to associated files in Google Chat"
+                },
+                "https://www.googleapis.com/auth/chat.import": {
+                    "description": "Import spaces, messages, and memberships into Google Chat."
+                },
                 "https://www.googleapis.com/auth/chat.memberships": {
                     "description": "View, add, and remove members from conversations in Google Chat"
                 },
+                "https://www.googleapis.com/auth/chat.memberships.app": {
+                    "description": "Add and remove itself from conversations in Google Chat"
+                },
                 "https://www.googleapis.com/auth/chat.memberships.readonly": {
                     "description": "View members in Google Chat conversations."
                 },
@@ -17,12 +26,24 @@
                 "https://www.googleapis.com/auth/chat.messages.create": {
                     "description": "Compose and send messages in Google Chat"
                 },
+                "https://www.googleapis.com/auth/chat.messages.reactions": {
+                    "description": "View, add, and delete reactions to messages in Google Chat"
+                },
+                "https://www.googleapis.com/auth/chat.messages.reactions.create": {
+                    "description": "Add reactions to messages in Google Chat"
+                },
+                "https://www.googleapis.com/auth/chat.messages.reactions.readonly": {
+                    "description": "View reactions to messages in Google Chat"
+                },
                 "https://www.googleapis.com/auth/chat.messages.readonly": {
                     "description": "View messages and reactions in Google Chat"
                 },
                 "https://www.googleapis.com/auth/chat.spaces": {
                     "description": "Create conversations and spaces and view or update metadata (including history settings) in Google Chat"
                 },
+                "https://www.googleapis.com/auth/chat.spaces.create": {
+                    "description": "Create new conversations in Google Chat"
+                },
                 "https://www.googleapis.com/auth/chat.spaces.readonly": {
                     "description": "View chat and spaces in Google Chat"
                 }
@@ -45,6 +66,13 @@
     "name": "chat",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230706",
+    "rootUrl": "https://chat.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Chat API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -122,7 +150,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "media": {
             "methods": {
@@ -153,13 +180,135 @@
                         "https://www.googleapis.com/auth/chat.messages.readonly"
                     ],
                     "supportsMediaDownload": true
+                },
+                "upload": {
+                    "description": "Uploads an attachment. For an example, see [Upload media as a file attachment](https://developers.google.com/chat/api/guides/v1/media-and-attachments/upload). Requires user [authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.messages` or `chat.messages.create` authorization scope. You can upload attachments up to 200 MB. Certain file types aren't supported. For details, see [File types blocked by Google Chat](https://support.google.com/chat/answer/7651457?&co=GENIE.Platform%3DDesktop#File%20types%20blocked%20in%20Google%20Chat).",
+                    "flatPath": "v1/spaces/{spacesId}/attachments:upload",
+                    "httpMethod": "POST",
+                    "id": "chat.media.upload",
+                    "mediaUpload": {
+                        "accept": [
+                            "*/*"
+                        ],
+                        "maxSize": "209715200",
+                        "protocols": {
+                            "resumable": {
+                                "multipart": true,
+                                "path": "/resumable/upload/v1/{+parent}/attachments:upload"
+                            },
+                            "simple": {
+                                "multipart": true,
+                                "path": "/upload/v1/{+parent}/attachments:upload"
+                            }
+                        }
+                    },
+                    "parameterOrder": [
+                        "parent"
+                    ],
+                    "parameters": {
+                        "parent": {
+                            "description": "Required. Resource name of the Chat space in which the attachment is uploaded. Format \"spaces/{space}\".",
+                            "location": "path",
+                            "pattern": "^spaces/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+parent}/attachments:upload",
+                    "request": {
+                        "$ref": "UploadAttachmentRequest"
+                    },
+                    "response": {
+                        "$ref": "UploadAttachmentResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/chat.import",
+                        "https://www.googleapis.com/auth/chat.messages",
+                        "https://www.googleapis.com/auth/chat.messages.create"
+                    ],
+                    "supportsMediaUpload": true
                 }
             }
         },
         "spaces": {
             "methods": {
+                "create": {
+                    "description": "Creates a named space. Spaces grouped by topics or that have guest access aren't supported. For an example, see [Create a space](https://developers.google.com/chat/api/guides/v1/spaces/create). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.spaces.create` or `chat.spaces` scope.",
+                    "flatPath": "v1/spaces",
+                    "httpMethod": "POST",
+                    "id": "chat.spaces.create",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "requestId": {
+                            "description": "Optional. A unique identifier for this request. A random UUID is recommended. Specifying an existing request ID returns the space created with that ID instead of creating a new space. Specifying an existing request ID from the same Chat app with a different authenticated user returns an error.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/spaces",
+                    "request": {
+                        "$ref": "Space"
+                    },
+                    "response": {
+                        "$ref": "Space"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/chat.import",
+                        "https://www.googleapis.com/auth/chat.spaces",
+                        "https://www.googleapis.com/auth/chat.spaces.create"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes a named space. Always performs a cascading delete, which means that the space's child resources—like messages posted in the space and memberships in the space—are also deleted. For an example, see [Delete a space](https://developers.google.com/chat/api/guides/v1/spaces/delete). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) from a user who has permission to delete the space, and the `chat.delete` scope.",
+                    "flatPath": "v1/spaces/{spacesId}",
+                    "httpMethod": "DELETE",
+                    "id": "chat.spaces.delete",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. Resource name of the space to delete. Format: `spaces/{space}`",
+                            "location": "path",
+                            "pattern": "^spaces/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/chat.delete",
+                        "https://www.googleapis.com/auth/chat.import"
+                    ]
+                },
+                "findDirectMessage": {
+                    "description": "Returns the existing direct message with the specified user. If no direct message space is found, returns a `404 NOT_FOUND` error. For an example, see [Find a direct message](/chat/api/guides/v1/spaces/find-direct-message). With [user authentication](https://developers.google.com/chat/api/guides/auth/users), returns the direct message space between the specified user and the authenticated user. With [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts), returns the direct message space between the specified user and the calling Chat app. Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) or [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).",
+                    "flatPath": "v1/spaces:findDirectMessage",
+                    "httpMethod": "GET",
+                    "id": "chat.spaces.findDirectMessage",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. Resource name of the user to find direct message with. Format: `users/{user}`, where `{user}` is either the `{person_id}` for the [person](https://developers.google.com/people/api/rest/v1/people) from the People API, or the `id` for the [user](https://developers.google.com/admin-sdk/directory/reference/rest/v1/users) in the Directory API. For example, if the People API `Person.resourceName` is `people/123456789`, you can find a direct message with that person by using `users/123456789` as the `name`.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/spaces:findDirectMessage",
+                    "response": {
+                        "$ref": "Space"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/chat.bot",
+                        "https://www.googleapis.com/auth/chat.spaces",
+                        "https://www.googleapis.com/auth/chat.spaces.readonly"
+                    ]
+                },
                 "get": {
-                    "description": "Returns a space. Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.spaces` or `chat.spaces.readonly` authorization scope.",
+                    "description": "Returns details about a space. For an example, see [Get a space](https://developers.google.com/chat/api/guides/v1/spaces/get). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.spaces` or `chat.spaces.readonly` authorization scope.",
                     "flatPath": "v1/spaces/{spacesId}",
                     "httpMethod": "GET",
                     "id": "chat.spaces.get",
@@ -168,7 +317,7 @@
                     ],
                     "parameters": {
                         "name": {
-                            "description": "Required. Resource name of the space, in the form \"spaces/*\". Format: spaces/{space}",
+                            "description": "Required. Resource name of the space, in the form \"spaces/*\". Format: `spaces/{space}`",
                             "location": "path",
                             "pattern": "^spaces/[^/]+$",
                             "required": true,
@@ -186,20 +335,25 @@
                     ]
                 },
                 "list": {
-                    "description": "Lists spaces the caller is a member of. Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.spaces` or `chat.spaces.readonly` authorization scope. Lists spaces visible to the caller or authenticated user. Group chats and DMs aren't listed until the first message is sent.",
+                    "description": "Lists spaces the caller is a member of. Group chats and DMs aren't listed until the first message is sent. For an example, see [List spaces](https://developers.google.com/chat/api/guides/v1/spaces/list). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.spaces` or `chat.spaces.readonly` authorization scope. Lists spaces visible to the caller or authenticated user. Group chats and DMs aren't listed until the first message is sent.",
                     "flatPath": "v1/spaces",
                     "httpMethod": "GET",
                     "id": "chat.spaces.list",
                     "parameterOrder": [],
                     "parameters": {
+                        "filter": {
+                            "description": "Optional. A query filter. Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users). You can filter spaces by the space type ([`space_type`](https://developers.google.com/chat/api/reference/rest/v1/spaces#spacetype)). To filter by space type, you must specify valid enum value, such as `SPACE` or `GROUP_CHAT` (the `space_type` can't be `SPACE_TYPE_UNSPECIFIED`). To query for multiple space types, use the `OR` operator. For example, the following queries are valid: ``` space_type = \"SPACE\" spaceType = \"GROUP_CHAT\" OR spaceType = \"DIRECT_MESSAGE\" ``` Invalid queries are rejected by the server with an `INVALID_ARGUMENT` error. With [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts), this field is ignored and the query always returns all spaces. But the Chat API still validates the query syntax with service accounts, so invalid queries are still rejected.",
+                            "location": "query",
+                            "type": "string"
+                        },
                         "pageSize": {
-                            "description": "Optional. The maximum number of spaces to return. The service may return fewer than this value. If unspecified, at most 100 spaces are returned. The maximum value is 1000; values above 1000 are coerced to 1000. Negative values return an `INVALID_ARGUMENT` error.",
+                            "description": "Optional. The maximum number of spaces to return. The service might return fewer than this value. If unspecified, at most 100 spaces are returned. The maximum value is 1,000. If you use a value more than 1,000, it's automatically changed to 1,000. Negative values return an `INVALID_ARGUMENT` error.",
                             "format": "int32",
                             "location": "query",
                             "type": "integer"
                         },
                         "pageToken": {
-                            "description": "Optional. A page token, received from a previous list spaces call. Provide this to retrieve the subsequent page. When paginating, the filter value should match the call that provided the page token. Passing a different value may lead to unexpected results.",
+                            "description": "Optional. A page token, received from a previous list spaces call. Provide this parameter to retrieve the subsequent page. When paginating, the filter value should match the call that provided the page token. Passing a different value may lead to unexpected results.",
                             "location": "query",
                             "type": "string"
                         }
@@ -213,13 +367,122 @@
                         "https://www.googleapis.com/auth/chat.spaces",
                         "https://www.googleapis.com/auth/chat.spaces.readonly"
                     ]
+                },
+                "patch": {
+                    "description": "Updates a space. For an example, see [Update a space](https://developers.google.com/chat/api/guides/v1/spaces/update). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.spaces` scope.",
+                    "flatPath": "v1/spaces/{spacesId}",
+                    "httpMethod": "PATCH",
+                    "id": "chat.spaces.patch",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Resource name of the space. Format: `spaces/{space}`",
+                            "location": "path",
+                            "pattern": "^spaces/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Required. The updated field paths, comma separated if there are multiple. Currently supported field paths: - `display_name` (Only supports changing the display name of a space with the `SPACE` type, or when also including the `space_type` mask to change a `GROUP_CHAT` space type to `SPACE`. Trying to update the display name of a `GROUP_CHAT` or a `DIRECT_MESSAGE` space results in an invalid argument error.) - `space_type` (Only supports changing a `GROUP_CHAT` space type to `SPACE`. Include `display_name` together with `space_type` in the update mask and ensure that the specified space has a non-empty display name and the `SPACE` space type. Including the `space_type` mask and the `SPACE` type in the specified space when updating the display name is optional if the existing space already has the `SPACE` type. Trying to update the space type in other ways results in an invalid argument error). - `space_details` - `space_history_state` (Supports [turning history on or off for the space](https://support.google.com/chat/answer/7664687) if [the organization allows users to change their history setting](https://support.google.com/a/answer/7664184). Warning: mutually exclusive with all other field paths.)",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "request": {
+                        "$ref": "Space"
+                    },
+                    "response": {
+                        "$ref": "Space"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/chat.import",
+                        "https://www.googleapis.com/auth/chat.spaces"
+                    ]
+                },
+                "setup": {
+                    "description": "Creates a space and adds specified users to it. The calling user is automatically added to the space, and shouldn't be specified as a membership in the request. For an example, see [Set up a space](https://developers.google.com/chat/api/guides/v1/spaces/set-up). To specify the human members to add, add memberships with the appropriate `member.name` in the `SetUpSpaceRequest`. To add a human user, use `users/{user}`, where `{user}` is either the `{person_id}` for the [person](https://developers.google.com/people/api/rest/v1/people) from the People API, or the `id` for the [user](https://developers.google.com/admin-sdk/directory/reference/rest/v1/users) in the Admin SDK Directory API. For example, if the People API `Person` `resourceName` is `people/123456789`, you can add the user to the space by including a membership with `users/123456789` as the `member.name`. For a space or group chat, if the caller blocks or is blocked by some members, then those members aren't added to the created space. To create a direct message (DM) between the calling user and another human user, specify exactly one membership to represent the human user. If one user blocks the other, the request fails and the DM isn't created. To create a DM between the calling user and the calling app, set `Space.singleUserBotDm` to `true` and don't specify any memberships. You can only use this method to set up a DM with the calling app. To add the calling app as a member of a space or an existing DM between two human users, see [create a membership](https://developers.google.com/chat/api/guides/v1/members/create). If a DM already exists between two users, even when one user blocks the other at the time a request is made, then the existing DM is returned. Spaces with threaded replies or guest access aren't supported. Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.spaces.create` or `chat.spaces` scope.",
+                    "flatPath": "v1/spaces:setup",
+                    "httpMethod": "POST",
+                    "id": "chat.spaces.setup",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/spaces:setup",
+                    "request": {
+                        "$ref": "SetUpSpaceRequest"
+                    },
+                    "response": {
+                        "$ref": "Space"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/chat.spaces",
+                        "https://www.googleapis.com/auth/chat.spaces.create"
+                    ]
                 }
             },
             "resources": {
                 "members": {
                     "methods": {
+                        "create": {
+                            "description": "Creates a human membership or app membership for the calling app. Creating memberships for other apps isn't supported. For an example, see [ Create a membership](https://developers.google.com/chat/api/guides/v1/members/create). When creating a membership, if the specified member has their auto-accept policy turned off, then they're invited, and must accept the space invitation before joining. Otherwise, creating a membership adds the member directly to the specified space. Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.memberships` (for human membership) or `chat.memberships.app` (for app membership) scope. To specify the member to add, set the `membership.member.name` in the `CreateMembershipRequest`: - To add the calling app to a space or a direct message between two human users, use `users/app`. Unable to add other apps to the space. - To add a human user, use `users/{user}`, where `{user}` is either the `{person_id}` for the [person](https://developers.google.com/people/api/rest/v1/people) from the People API, or the `id` for the [user](https://developers.google.com/admin-sdk/directory/reference/rest/v1/users) in the Directory API. For example, if the People API `Person` `resourceName` is `people/123456789`, you can add the user to the space by setting the `membership.member.name` to `users/123456789`.",
+                            "flatPath": "v1/spaces/{spacesId}/members",
+                            "httpMethod": "POST",
+                            "id": "chat.spaces.members.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The resource name of the space for which to create the membership. Format: spaces/{space}",
+                                    "location": "path",
+                                    "pattern": "^spaces/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/members",
+                            "request": {
+                                "$ref": "Membership"
+                            },
+                            "response": {
+                                "$ref": "Membership"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/chat.memberships",
+                                "https://www.googleapis.com/auth/chat.memberships.app"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes a membership. For an example, see [Delete a membership](https://developers.google.com/chat/api/guides/v1/members/delete). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.memberships` or `chat.memberships.app` authorization scope.",
+                            "flatPath": "v1/spaces/{spacesId}/members/{membersId}",
+                            "httpMethod": "DELETE",
+                            "id": "chat.spaces.members.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. Resource name of the membership to delete. Chat apps can delete human users' or their own memberships. Chat apps can't delete other apps' memberships. When deleting a human membership, requires the `chat.memberships` scope and `spaces/{space}/members/{member}` format. When deleting an app membership, requires the `chat.memberships.app` scope and `spaces/{space}/members/app` format. Format: `spaces/{space}/members/{member}` or `spaces/{space}/members/app`",
+                                    "location": "path",
+                                    "pattern": "^spaces/[^/]+/members/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Membership"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/chat.memberships",
+                                "https://www.googleapis.com/auth/chat.memberships.app"
+                            ]
+                        },
                         "get": {
-                            "description": "Returns a membership. Requires [authentication](https://developers.google.com/chat/api/guides/auth/). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.memberships` or `chat.memberships.readonly` authorization scope.",
+                            "description": "Returns details about a membership. For an example, see [Get a membership](https://developers.google.com/chat/api/guides/v1/members/get). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.memberships` or `chat.memberships.readonly` authorization scope.",
                             "flatPath": "v1/spaces/{spacesId}/members/{membersId}",
                             "httpMethod": "GET",
                             "id": "chat.spaces.members.get",
@@ -228,7 +491,7 @@
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "Required. Resource name of the membership to retrieve. Format: spaces/{space}/members/{member}",
+                                    "description": "Required. Resource name of the membership to retrieve. To get the app's own membership, you can optionally use `spaces/{space}/members/app`. Format: `spaces/{space}/members/{member}` or `spaces/{space}/members/app`",
                                     "location": "path",
                                     "pattern": "^spaces/[^/]+/members/[^/]+$",
                                     "required": true,
@@ -246,7 +509,7 @@
                             ]
                         },
                         "list": {
-                            "description": "Lists memberships in a space. Requires [authentication](https://developers.google.com/chat/api/guides/auth/). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.memberships` or `chat.memberships.readonly` authorization scope.",
+                            "description": "Lists memberships in a space. For an example, see [List memberships](https://developers.google.com/chat/api/guides/v1/members/list). Listing memberships with [app authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) lists memberships in spaces that the Chat app has access to, but excludes Chat app memberships, including its own. Listing memberships with [User authentication](https://developers.google.com/chat/api/guides/auth/users) lists memberships in spaces that the authenticated user has access to. Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.memberships` or `chat.memberships.readonly` authorization scope.",
                             "flatPath": "v1/spaces/{spacesId}/members",
                             "httpMethod": "GET",
                             "id": "chat.spaces.members.list",
@@ -254,14 +517,19 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "filter": {
+                                    "description": "Optional. A query filter. You can filter memberships by a member's role ([`role`](https://developers.google.com/chat/api/reference/rest/v1/spaces.members#membershiprole)) and type ([`member.type`](https://developers.google.com/chat/api/reference/rest/v1/User#type)). To filter by role, set `role` to `ROLE_MEMBER` or `ROLE_MANAGER`. To filter by type, set `member.type` to `HUMAN` or `BOT`. To filter by both role and type, use the `AND` operator. To filter by either role or type, use the `OR` operator. For example, the following queries are valid: ``` role = \"ROLE_MANAGER\" OR role = \"ROLE_MEMBER\" member.type = \"HUMAN\" AND role = \"ROLE_MANAGER\" ``` The following queries are invalid: ``` member.type = \"HUMAN\" AND member.type = \"BOT\" role = \"ROLE_MANAGER\" AND role = \"ROLE_MEMBER\" ``` Invalid queries are rejected by the server with an `INVALID_ARGUMENT` error.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageSize": {
-                                    "description": "The maximum number of memberships to return. The service may return fewer than this value. If unspecified, at most 100 memberships are returned. The maximum value is 1000; values above 1000 are coerced to 1000. Negative values return an INVALID_ARGUMENT error.",
+                                    "description": "The maximum number of memberships to return. The service might return fewer than this value. If unspecified, at most 100 memberships are returned. The maximum value is 1,000. If you use a value more than 1,000, it's automatically changed to 1,000. Negative values return an `INVALID_ARGUMENT` error.",
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
                                 },
                                 "pageToken": {
-                                    "description": "A page token, received from a previous call to list memberships. Provide this to retrieve the subsequent page. When paginating, all other parameters provided should match the call that provided the page token. Passing different values to the other parameters may lead to unexpected results.",
+                                    "description": "A page token, received from a previous call to list memberships. Provide this parameter to retrieve the subsequent page. When paginating, all other parameters provided should match the call that provided the page token. Passing different values to the other parameters might lead to unexpected results.",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -271,6 +539,11 @@
                                     "pattern": "^spaces/[^/]+$",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "showInvited": {
+                                    "description": "Optional. When `true`, also returns memberships associated with invited members, in addition to other types of memberships. If a filter is set, invited memberships that don't match the filter criteria aren't returned. Currently requires [user authentication](https://developers.google.com/chat/api/guides/auth/users).",
+                                    "location": "query",
+                                    "type": "boolean"
                                 }
                             },
                             "path": "v1/{+parent}/members",
@@ -288,7 +561,7 @@
                 "messages": {
                     "methods": {
                         "create": {
-                            "description": "Creates a message. For example usage, see [Create a message](https://developers.google.com/chat/api/guides/crudl/messages#create_a_message). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` or `chat.messages.create` authorization scope. Because Chat provides authentication for [webhooks](https://developers.google.com/chat/how-tos/webhooks) as part of the URL that's generated when a webhook is registered, webhooks can create messages without a service account or user authentication.",
+                            "description": "Creates a message. For an example, see [Create a message](https://developers.google.com/chat/api/guides/crudl/messages#create_a_message). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Creating a text message supports both [user authentication](https://developers.google.com/chat/api/guides/auth/users) and [app authentication] (https://developers.google.com/chat/api/guides/auth/service-accounts). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` or `chat.messages.create` authorization scope. Creating a card message only supports and requires [app authentication] (https://developers.google.com/chat/api/guides/auth/service-accounts). Because Chat provides authentication for [webhooks](https://developers.google.com/chat/how-tos/webhooks) as part of the URL that's generated when a webhook is registered, webhooks can create messages without a service account or user authentication.",
                             "flatPath": "v1/spaces/{spacesId}/messages",
                             "httpMethod": "POST",
                             "id": "chat.spaces.messages.create",
@@ -297,7 +570,7 @@
                             ],
                             "parameters": {
                                 "messageId": {
-                                    "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).",
+                                    "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. Assigning a custom name lets a a Chat app recall the message without saving the message `name` from the [response body](/chat/api/reference/rest/v1/spaces.messages/get#response-body) returned when creating the message. Assigning a custom name doesn't replace the generated `name` field, the message's resource name. Instead, it sets the custom name as the `clientAssignedMessageId` field, which you can reference while processing later operations, like updating or deleting the message. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/v1/messages/create#name_a_created_message).",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -310,14 +583,14 @@
                                     ],
                                     "enumDescriptions": [
                                         "Default. Starts a thread.",
-                                        "Creates the message as a reply to the thread specified by thread ID or thread_key. If it fails, the message starts a new thread instead.",
-                                        "Creates the message as a reply to the thread specified by thread ID or thread_key. If it fails, a NOT_FOUND error is returned instead."
+                                        "Creates the message as a reply to the thread specified by thread ID or `thread_key`. If it fails, the message starts a new thread instead.",
+                                        "Creates the message as a reply to the thread specified by thread ID or `thread_key`. If it fails, a `NOT_FOUND` error is returned instead."
                                     ],
                                     "location": "query",
                                     "type": "string"
                                 },
                                 "parent": {
-                                    "description": "Required. The resource name of the space in which to create a message. Format: spaces/{space}",
+                                    "description": "Required. The resource name of the space in which to create a message. Format: `spaces/{space}`",
                                     "location": "path",
                                     "pattern": "^spaces/[^/]+$",
                                     "required": true,
@@ -343,12 +616,13 @@
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/chat.bot",
+                                "https://www.googleapis.com/auth/chat.import",
                                 "https://www.googleapis.com/auth/chat.messages",
                                 "https://www.googleapis.com/auth/chat.messages.create"
                             ]
                         },
                         "delete": {
-                            "description": "Deletes a message. For example usage, see [Delete a message](https://developers.google.com/chat/api/guides/crudl/messages#delete_a_message). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` authorization scope.",
+                            "description": "Deletes a message. For an example, see [Delete a message](https://developers.google.com/chat/api/guides/v1/messages/delete). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` authorization scope.",
                             "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}",
                             "httpMethod": "DELETE",
                             "id": "chat.spaces.messages.delete",
@@ -356,8 +630,13 @@
                                 "name"
                             ],
                             "parameters": {
+                                "force": {
+                                    "description": "When `true`, deleting a message also deletes its threaded replies. When `false`, if a message has threaded replies, deletion fails. Only applies when [authenticating as a user](https://developers.google.com/chat/api/guides/auth/users). Has no effect when [authenticating with a service account] (https://developers.google.com/chat/api/guides/auth/service-accounts).",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
                                 "name": {
-                                    "description": "Required. Resource name of the message to be deleted, in the form \"spaces/*/messages/*\" Example: spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB",
+                                    "description": "Required. Resource name of the message that you want to delete, in the form `spaces/*/messages/*` Example: `spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB`",
                                     "location": "path",
                                     "pattern": "^spaces/[^/]+/messages/[^/]+$",
                                     "required": true,
@@ -370,11 +649,12 @@
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/chat.bot",
+                                "https://www.googleapis.com/auth/chat.import",
                                 "https://www.googleapis.com/auth/chat.messages"
                             ]
                         },
                         "get": {
-                            "description": "Returns a message. For example usage, see [Read a message](https://developers.google.com/chat/api/guides/crudl/messages#read_a_message). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [Service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` or `chat.messages.readonly` authorization scope. Note: Might return a message from a blocked member or space.",
+                            "description": "Returns details about a message. For an example, see [Read a message](https://developers.google.com/chat/api/guides/v1/messages/get). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` or `chat.messages.readonly` authorization scope. Note: Might return a message from a blocked member or space.",
                             "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}",
                             "httpMethod": "GET",
                             "id": "chat.spaces.messages.get",
@@ -383,7 +663,7 @@
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "Required. Resource name of the message to retrieve. Format: spaces/{space}/messages/{message} If the message begins with `client-`, then it has a custom name assigned by a Chat app that created it with the Chat REST API. That Chat app (but not others) can pass the custom name to get, update, or delete the message. To learn more, see [create and name a message] (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).",
+                                    "description": "Required. Resource name of the message to retrieve. Format: `spaces/{space}/messages/{message}` If the message begins with `client-`, then it has a custom name assigned by a Chat app that created it with the Chat REST API. That Chat app (but not others) can pass the custom name to get, update, or delete the message. To learn more, see [create and name a message] (https://developers.google.com/chat/api/guides/v1/messages/create#name_a_created_message).",
                                     "location": "path",
                                     "pattern": "^spaces/[^/]+/messages/[^/]+$",
                                     "required": true,
@@ -400,8 +680,61 @@
                                 "https://www.googleapis.com/auth/chat.messages.readonly"
                             ]
                         },
+                        "list": {
+                            "description": "Lists messages in a space that the caller is a member of, including messages from blocked members and spaces. For an example, see [List messages](/chat/api/guides/v1/messages/list). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.messages` or `chat.messages.readonly` authorization scope. This method is only supported in spaces that don't allow users from outside the Workspace organization to join.",
+                            "flatPath": "v1/spaces/{spacesId}/messages",
+                            "httpMethod": "GET",
+                            "id": "chat.spaces.messages.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "A query filter. You can filter messages by date (`create_time`) and thread (`thread.name`). To filter messages by the date they were created, specify the `create_time` with a timestamp in [RFC-3339](https://www.rfc-editor.org/rfc/rfc3339) format and double quotation marks. For example, `\"2023-04-21T11:30:00-04:00\"`. You can use the greater than operator `>` to list messages that were created after a timestamp, or the less than operator `<` to list messages that were created before a timestamp. To filter messages within a time interval, use the `AND` operator between two timestamps. To filter by thread, specify the `thread.name`, formatted as `spaces/{space}/threads/{thread}`. You can only specify one `thread.name` per query. To filter by both thread and date, use the `AND` operator in your query. For example, the following queries are valid: ``` create_time > \"2012-04-21T11:30:00-04:00\" create_time > \"2012-04-21T11:30:00-04:00\" AND thread.name = spaces/AAAAAAAAAAA/threads/123 create_time > \"2012-04-21T11:30:00+00:00\" AND create_time < \"2013-01-01T00:00:00+00:00\" AND thread.name = spaces/AAAAAAAAAAA/threads/123 thread.name = spaces/AAAAAAAAAAA/threads/123 ``` Invalid queries are rejected by the server with an `INVALID_ARGUMENT` error.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "orderBy": {
+                                    "description": "Optional, if resuming from a previous query. How the list of messages is ordered. Specify a value to order by an ordering operation. Valid ordering operation values are as follows: - `ASC` for ascending. - `DESC` for descending. The default ordering is `create_time ASC`.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of messages returned. The service might return fewer messages than this value. If unspecified, at most 25 are returned. The maximum value is 1,000. If you use a value more than 1,000, it's automatically changed to 1,000. Negative values return an `INVALID_ARGUMENT` error.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "Optional, if resuming from a previous query. A page token received from a previous list messages call. Provide this parameter to retrieve the subsequent page. When paginating, all other parameters provided should match the call that provided the page token. Passing different values to the other parameters might lead to unexpected results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. The resource name of the space to list messages from. Format: `spaces/{space}`",
+                                    "location": "path",
+                                    "pattern": "^spaces/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "showDeleted": {
+                                    "description": "Whether to include deleted messages. Deleted messages include deleted time and metadata about their deletion, but message content is unavailable.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v1/{+parent}/messages",
+                            "response": {
+                                "$ref": "ListMessagesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/chat.import",
+                                "https://www.googleapis.com/auth/chat.messages",
+                                "https://www.googleapis.com/auth/chat.messages.readonly"
+                            ]
+                        },
                         "patch": {
-                            "description": "Updates a message. There's a difference between `patch` and `update` methods. The `patch` method uses a `patch` request while the `update` method uses a `put` request. We recommend using the `patch` method. For example usage, see [Update a message](https://developers.google.com/chat/api/guides/crudl/messages#update_a_message). Requires [authentication](https://developers.google.com/chat/api/guides/auth/). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` authorization scope.",
+                            "description": "Updates a message. There's a difference between the `patch` and `update` methods. The `patch` method uses a `patch` request while the `update` method uses a `put` request. We recommend using the `patch` method. For an example, see [Update a message](https://developers.google.com/chat/api/guides/v1/messages/update). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` authorization scope.",
                             "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}",
                             "httpMethod": "PATCH",
                             "id": "chat.spaces.messages.patch",
@@ -410,7 +743,7 @@
                             ],
                             "parameters": {
                                 "allowMissing": {
-                                    "description": "Optional. If `true` and the message is not found, a new message is created and `updateMask` is ignored. The specified message ID must be [client-assigned](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message) or the request fails.",
+                                    "description": "Optional. If `true` and the message isn't found, a new message is created and `updateMask` is ignored. The specified message ID must be [client-assigned](https://developers.google.com/chat/api/guides/v1/messages/create#name_a_created_message) or the request fails.",
                                     "location": "query",
                                     "type": "boolean"
                                 },
@@ -422,7 +755,7 @@
                                     "type": "string"
                                 },
                                 "updateMask": {
-                                    "description": "Required. The field paths to update. Separate multiple values with commas. Currently supported field paths: - text - cards (Requires [service account authentication](/chat/api/guides/auth/service-accounts).) - cards_v2 ",
+                                    "description": "Required. The field paths to update. Separate multiple values with commas. Currently supported field paths: - `text` - `attachment` - `cards` (Requires [service account authentication](/chat/api/guides/auth/service-accounts).) - `cards_v2` (Requires [service account authentication](/chat/api/guides/auth/service-accounts).)",
                                     "format": "google-fieldmask",
                                     "location": "query",
                                     "type": "string"
@@ -437,11 +770,12 @@
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/chat.bot",
+                                "https://www.googleapis.com/auth/chat.import",
                                 "https://www.googleapis.com/auth/chat.messages"
                             ]
                         },
                         "update": {
-                            "description": "Updates a message. There's a difference between `patch` and `update` methods. The `patch` method uses a `patch` request while the `update` method uses a `put` request. We recommend using the `patch` method. For example usage, see [Update a message](https://developers.google.com/chat/api/guides/crudl/messages#update_a_message). Requires [authentication](https://developers.google.com/chat/api/guides/auth/). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). Supports [user authentication](https://developers.google.com/chat/api/guides/auth/users) as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` authorization scope.",
+                            "description": "Updates a message. There's a difference between the `patch` and `update` methods. The `patch` method uses a `patch` request while the `update` method uses a `put` request. We recommend using the `patch` method. For an example, see [Update a message](https://developers.google.com/chat/api/guides/v1/messages/update). Requires [authentication](https://developers.google.com/chat/api/guides/auth). Fully supports [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts) and [user authentication](https://developers.google.com/chat/api/guides/auth/users). [User authentication](https://developers.google.com/chat/api/guides/auth/users) requires the `chat.messages` authorization scope.",
                             "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}",
                             "httpMethod": "PUT",
                             "id": "chat.spaces.messages.update",
@@ -450,7 +784,7 @@
                             ],
                             "parameters": {
                                 "allowMissing": {
-                                    "description": "Optional. If `true` and the message is not found, a new message is created and `updateMask` is ignored. The specified message ID must be [client-assigned](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message) or the request fails.",
+                                    "description": "Optional. If `true` and the message isn't found, a new message is created and `updateMask` is ignored. The specified message ID must be [client-assigned](https://developers.google.com/chat/api/guides/v1/messages/create#name_a_created_message) or the request fails.",
                                     "location": "query",
                                     "type": "boolean"
                                 },
@@ -462,7 +796,7 @@
                                     "type": "string"
                                 },
                                 "updateMask": {
-                                    "description": "Required. The field paths to update. Separate multiple values with commas. Currently supported field paths: - text - cards (Requires [service account authentication](/chat/api/guides/auth/service-accounts).) - cards_v2 ",
+                                    "description": "Required. The field paths to update. Separate multiple values with commas. Currently supported field paths: - `text` - `attachment` - `cards` (Requires [service account authentication](/chat/api/guides/auth/service-accounts).) - `cards_v2` (Requires [service account authentication](/chat/api/guides/auth/service-accounts).)",
                                     "format": "google-fieldmask",
                                     "location": "query",
                                     "type": "string"
@@ -477,6 +811,7 @@
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/chat.bot",
+                                "https://www.googleapis.com/auth/chat.import",
                                 "https://www.googleapis.com/auth/chat.messages"
                             ]
                         }
@@ -485,7 +820,7 @@
                         "attachments": {
                             "methods": {
                                 "get": {
-                                    "description": "Gets the metadata of a message attachment. The attachment data is fetched using the [media API](https://developers.google.com/chat/api/reference/rest/v1/media/download). Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).",
+                                    "description": "Gets the metadata of a message attachment. The attachment data is fetched using the [media API](https://developers.google.com/chat/api/reference/rest/v1/media/download). For an example, see [Get a message attachment](https://developers.google.com/chat/api/guides/v1/media-and-attachments/get). Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).",
                                     "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}/attachments/{attachmentsId}",
                                     "httpMethod": "GET",
                                     "id": "chat.spaces.messages.attachments.get",
@@ -494,7 +829,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "Required. Resource name of the attachment, in the form \"spaces/*/messages/*/attachments/*\".",
+                                            "description": "Required. Resource name of the attachment, in the form `spaces/*/messages/*/attachments/*`.",
                                             "location": "path",
                                             "pattern": "^spaces/[^/]+/messages/[^/]+/attachments/[^/]+$",
                                             "required": true,
@@ -510,17 +845,121 @@
                                     ]
                                 }
                             }
+                        },
+                        "reactions": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a reaction and adds it to a message. For an example, see [Create a reaction](https://developers.google.com/chat/api/guides/v1/reactions/create). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.messages`, `chat.messages.reactions`, or `chat.messages.reactions.create` scope. Only unicode emoji are supported.",
+                                    "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}/reactions",
+                                    "httpMethod": "POST",
+                                    "id": "chat.spaces.messages.reactions.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. The message where the reaction is created. Format: `spaces/{space}/messages/{message}`",
+                                            "location": "path",
+                                            "pattern": "^spaces/[^/]+/messages/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/reactions",
+                                    "request": {
+                                        "$ref": "Reaction"
+                                    },
+                                    "response": {
+                                        "$ref": "Reaction"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/chat.import",
+                                        "https://www.googleapis.com/auth/chat.messages",
+                                        "https://www.googleapis.com/auth/chat.messages.reactions",
+                                        "https://www.googleapis.com/auth/chat.messages.reactions.create"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a reaction to a message. For an example, see [Delete a reaction](https://developers.google.com/chat/api/guides/v1/reactions/delete). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and the `chat.messages` or `chat.messages.reactions` scope.",
+                                    "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}/reactions/{reactionsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "chat.spaces.messages.reactions.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the reaction to delete. Format: `spaces/{space}/messages/{message}/reactions/{reaction}`",
+                                            "location": "path",
+                                            "pattern": "^spaces/[^/]+/messages/[^/]+/reactions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/chat.import",
+                                        "https://www.googleapis.com/auth/chat.messages",
+                                        "https://www.googleapis.com/auth/chat.messages.reactions"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists reactions to a message. For an example, see [List reactions](https://developers.google.com/chat/api/guides/v1/reactions/list). Requires [user authentication](https://developers.google.com/chat/api/guides/auth/users) and `chat.messages`, `chat.messages.readonly`, `chat.messages.reactions`, or `chat.messages.reactions.readonly` scope.",
+                                    "flatPath": "v1/spaces/{spacesId}/messages/{messagesId}/reactions",
+                                    "httpMethod": "GET",
+                                    "id": "chat.spaces.messages.reactions.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Optional. A query filter. You can filter reactions by [emoji](https://developers.google.com/chat/api/reference/rest/v1/Emoji) (either `emoji.unicode` or `emoji.custom_emoji.uid`) and [user](https://developers.google.com/chat/api/reference/rest/v1/User) (`user.name`). To filter reactions for multiple emojis or users, join similar fields with the `OR` operator, such as `emoji.unicode = \"🙂\" OR emoji.unicode = \"👍\"` and `user.name = \"users/AAAAAA\" OR user.name = \"users/BBBBBB\"`. To filter reactions by emoji and user, use the `AND` operator, such as `emoji.unicode = \"🙂\" AND user.name = \"users/AAAAAA\"`. If your query uses both `AND` and `OR`, group them with parentheses. For example, the following queries are valid: ``` user.name = \"users/{user}\" emoji.unicode = \"🙂\" emoji.custom_emoji.uid = \"{uid}\" emoji.unicode = \"🙂\" OR emoji.unicode = \"👍\" emoji.unicode = \"🙂\" OR emoji.custom_emoji.uid = \"{uid}\" emoji.unicode = \"🙂\" AND user.name = \"users/{user}\" (emoji.unicode = \"🙂\" OR emoji.custom_emoji.uid = \"{uid}\") AND user.name = \"users/{user}\" ``` The following queries are invalid: ``` emoji.unicode = \"🙂\" AND emoji.unicode = \"👍\" emoji.unicode = \"🙂\" AND emoji.custom_emoji.uid = \"{uid}\" emoji.unicode = \"🙂\" OR user.name = \"users/{user}\" emoji.unicode = \"🙂\" OR emoji.custom_emoji.uid = \"{uid}\" OR user.name = \"users/{user}\" emoji.unicode = \"🙂\" OR emoji.custom_emoji.uid = \"{uid}\" AND user.name = \"users/{user}\" ``` Invalid queries are rejected by the server with an `INVALID_ARGUMENT` error.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Optional. The maximum number of reactions returned. The service can return fewer reactions than this value. If unspecified, the default value is 25. The maximum value is 200; values above 200 are changed to 200.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "Optional. (If resuming from a previous query.) A page token received from a previous list reactions call. Provide this to retrieve the subsequent page. When paginating, the filter value should match the call that provided the page token. Passing a different value might lead to unexpected results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The message users reacted to. Format: `spaces/{space}/messages/{message}`",
+                                            "location": "path",
+                                            "pattern": "^spaces/[^/]+/messages/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/reactions",
+                                    "response": {
+                                        "$ref": "ListReactionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/chat.messages",
+                                        "https://www.googleapis.com/auth/chat.messages.reactions",
+                                        "https://www.googleapis.com/auth/chat.messages.reactions.readonly",
+                                        "https://www.googleapis.com/auth/chat.messages.readonly"
+                                    ]
+                                }
+                            }
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20230504",
-    "rootUrl": "https://chat.googleapis.com/",
     "schemas": {
         "ActionParameter": {
-            "description": "List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.",
+            "description": "List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze one day, snooze next week. You might use `action method = snooze()`, passing the snooze type and snooze time in the list of string parameters.",
             "id": "ActionParameter",
             "properties": {
                 "key": {
@@ -553,17 +992,17 @@
                         "DIALOG"
                     ],
                     "enumDescriptions": [
-                        "Default type; will be handled as NEW_MESSAGE.",
+                        "Default type that's handled as `NEW_MESSAGE`.",
                         "Post as a new message in the topic.",
-                        "Update the Chat app's message. This is only permitted on a CARD_CLICKED event where the message sender type is BOT.",
-                        "Update the cards on a user's message. This is only permitted as a response to a MESSAGE event with a matched url, or a CARD_CLICKED event where the message sender type is HUMAN. Text will be ignored.",
-                        "Privately ask the user for additional auth or config.",
+                        "Update the Chat app's message. This is only permitted on a `CARD_CLICKED` event where the message sender type is `BOT`.",
+                        "Update the cards on a user's message. This is only permitted as a response to a `MESSAGE` event with a matched url, or a `CARD_CLICKED` event where the message sender type is `HUMAN`. Text is ignored.",
+                        "Privately ask the user for additional authentication or configuration.",
                         "Presents a [dialog](https://developers.google.com/chat/how-tos/dialogs)."
                     ],
                     "type": "string"
                 },
                 "url": {
-                    "description": "Input only. URL for users to auth or config. (Only for REQUEST_CONFIG response types.)",
+                    "description": "Input only. URL for users to authenticate or configure. (Only for `REQUEST_CONFIG` response types.)",
                     "type": "string"
                 }
             },
@@ -648,7 +1087,7 @@
                         "SLASH_COMMAND"
                     ],
                     "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
+                        "Default value for the enum. Don't use.",
                         "A user is mentioned.",
                         "A slash command is invoked."
                     ],
@@ -661,13 +1100,25 @@
             },
             "type": "object"
         },
+        "AttachedGif": {
+            "description": "A GIF image that's specified by a URL.",
+            "id": "AttachedGif",
+            "properties": {
+                "uri": {
+                    "description": "Output only. The URL that hosts the GIF image.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Attachment": {
             "description": "An attachment in Google Chat.",
             "id": "Attachment",
             "properties": {
                 "attachmentDataRef": {
                     "$ref": "AttachmentDataRef",
-                    "description": "A reference to the attachment data. This is used with the media API to download the attachment data."
+                    "description": "A reference to the attachment data. This field is used with the media API to download the attachment data."
                 },
                 "contentName": {
                     "description": "The original file name for the content, not the full path.",
@@ -678,16 +1129,16 @@
                     "type": "string"
                 },
                 "downloadUri": {
-                    "description": "Output only. The download URL which should be used to allow a human user to download the attachment. Chat apps should not use this URL to download attachment content.",
+                    "description": "Output only. The download URL which should be used to allow a human user to download the attachment. Chat apps shouldn't use this URL to download attachment content.",
                     "readOnly": true,
                     "type": "string"
                 },
                 "driveDataRef": {
                     "$ref": "DriveDataRef",
-                    "description": "A reference to the drive attachment. This is used with the Drive API."
+                    "description": "A reference to the drive attachment. This field is used with the Drive API."
                 },
                 "name": {
-                    "description": "Resource name of the attachment, in the form \"spaces/*/messages/*/attachments/*\".",
+                    "description": "Resource name of the attachment, in the form `spaces/*/messages/*/attachments/*`.",
                     "type": "string"
                 },
                 "source": {
@@ -705,7 +1156,7 @@
                     "type": "string"
                 },
                 "thumbnailUri": {
-                    "description": "Output only. The thumbnail URL which should be used to preview the attachment to a human user. Chat apps should not use this URL to download attachment content.",
+                    "description": "Output only. The thumbnail URL which should be used to preview the attachment to a human user. Chat apps shouldn't use this URL to download attachment content.",
                     "readOnly": true,
                     "type": "string"
                 }
@@ -715,8 +1166,12 @@
         "AttachmentDataRef": {
             "id": "AttachmentDataRef",
             "properties": {
+                "attachmentUploadToken": {
+                    "description": "Opaque token containing a reference to an uploaded attachment. Treated by clients as an opaque string and used to create or update Chat messages with attachments.",
+                    "type": "string"
+                },
                 "resourceName": {
-                    "description": "The resource name of the attachment data. This is used with the media API to download the attachment data.",
+                    "description": "The resource name of the attachment data. This field is used with the media API to download the attachment data.",
                     "type": "string"
                 }
             },
@@ -728,17 +1183,17 @@
             "properties": {
                 "imageButton": {
                     "$ref": "ImageButton",
-                    "description": "A button with image and onclick action."
+                    "description": "A button with image and `onclick` action."
                 },
                 "textButton": {
                     "$ref": "TextButton",
-                    "description": "A button with text and onclick action."
+                    "description": "A button with text and `onclick` action."
                 }
             },
             "type": "object"
         },
         "Card": {
-            "description": "A card is a UI element that can contain UI widgets such as texts, images.",
+            "description": "A card is a UI element that can contain UI widgets such as text and images.",
             "id": "Card",
             "properties": {
                 "cardActions": {
@@ -785,7 +1240,7 @@
             "id": "CardHeader",
             "properties": {
                 "imageStyle": {
-                    "description": "The image's type (e.g. square border or circular border).",
+                    "description": "The image's type (for example, square border or circular border).",
                     "enum": [
                         "IMAGE_STYLE_UNSPECIFIED",
                         "IMAGE",
@@ -807,7 +1262,7 @@
                     "type": "string"
                 },
                 "title": {
-                    "description": "The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each will take up 1 line. If only the title is specified, it will take up both lines.",
+                    "description": "The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each takes up one line. If only the title is specified, it takes up both lines.",
                     "type": "string"
                 }
             },
@@ -848,7 +1303,7 @@
             "type": "object"
         },
         "Color": {
-            "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
+            "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
             "id": "Color",
             "properties": {
                 "alpha": {
@@ -953,6 +1408,17 @@
             },
             "type": "object"
         },
+        "CustomEmoji": {
+            "description": "Represents a custom emoji.",
+            "id": "CustomEmoji",
+            "properties": {
+                "uid": {
+                    "description": "Unique key for the custom emoji resource.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DateInput": {
             "description": "Date input values.",
             "id": "DateInput",
@@ -985,8 +1451,37 @@
             },
             "type": "object"
         },
+        "DeletionMetadata": {
+            "description": "Information about a deleted message. A message is deleted when `delete_time` is set.",
+            "id": "DeletionMetadata",
+            "properties": {
+                "deletionType": {
+                    "description": "Indicates who deleted the message.",
+                    "enum": [
+                        "DELETION_TYPE_UNSPECIFIED",
+                        "CREATOR",
+                        "SPACE_OWNER",
+                        "ADMIN",
+                        "APP_MESSAGE_EXPIRY",
+                        "CREATOR_VIA_APP",
+                        "SPACE_OWNER_VIA_APP"
+                    ],
+                    "enumDescriptions": [
+                        "This value is unused.",
+                        "User deleted their own message.",
+                        "The space owner deleted the message.",
+                        "A Google Workspace admin deleted the message.",
+                        "A Chat app deleted its own message when it expired.",
+                        "A Chat app deleted the message on behalf of the user.",
+                        "A Chat app deleted the message on behalf of the space owner."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DeprecatedEvent": {
-            "description": "Google Chat events.",
+            "description": "Google Chat events. To learn how to use events, see [Receive and respond to Google Chat events](https://developers.google.com/chat/api/guides/message-formats).",
             "id": "DeprecatedEvent",
             "properties": {
                 "action": {
@@ -1073,7 +1568,7 @@
             "properties": {
                 "body": {
                     "$ref": "GoogleAppsCardV1Card",
-                    "description": "Input only. Body of the dialog, which is rendered in a modal. Google Chat apps do not support the following card entities: `DateTimePicker`, `OnChangeAction`."
+                    "description": "Input only. Body of the dialog, which is rendered in a modal. Google Chat apps don't support the following card entities: `DateTimePicker`, `OnChangeAction`."
                 }
             },
             "type": "object"
@@ -1098,12 +1593,44 @@
             "id": "DriveDataRef",
             "properties": {
                 "driveFileId": {
-                    "description": "The id for the drive file, for use with the Drive API.",
+                    "description": "The ID for the drive file. Use with the Drive API.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
+        "Emoji": {
+            "description": "An emoji that is used as a reaction to a message.",
+            "id": "Emoji",
+            "properties": {
+                "customEmoji": {
+                    "$ref": "CustomEmoji",
+                    "description": "Output only. A custom emoji.",
+                    "readOnly": true
+                },
+                "unicode": {
+                    "description": "A basic emoji represented by a unicode string.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EmojiReactionSummary": {
+            "description": "The number of people who reacted to a message with a specific emoji.",
+            "id": "EmojiReactionSummary",
+            "properties": {
+                "emoji": {
+                    "$ref": "Emoji",
+                    "description": "Emoji associated with the reactions."
+                },
+                "reactionCount": {
+                    "description": "The total number of reactions using the associated emoji.",
+                    "format": "int32",
+                    "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); }",
             "id": "Empty",
@@ -1111,11 +1638,11 @@
             "type": "object"
         },
         "FormAction": {
-            "description": "A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form.",
+            "description": "A form action describes the behavior when the form is submitted. For example, you can invoke Apps Script to handle the form.",
             "id": "FormAction",
             "properties": {
                 "actionMethodName": {
-                    "description": "The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the Chat app as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.",
+                    "description": "The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the Chat app as part of the card click event. You can use the same method name for several elements that trigger a common behavior.",
                     "type": "string"
                 },
                 "parameters": {
@@ -1129,7 +1656,7 @@
             "type": "object"
         },
         "GoogleAppsCardV1Action": {
-            "description": "An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. If the action is triggered, the form values are sent to the server.",
+            "description": "An action that describes the behavior when the form is submitted. For example, you can invoke an Apps Script script to handle the form. If the action is triggered, the form values are sent to the server.",
             "id": "GoogleAppsCardV1Action",
             "properties": {
                 "function": {
@@ -1137,7 +1664,7 @@
                     "type": "string"
                 },
                 "interaction": {
-                    "description": "Optional. Required when opening a [dialog](https://developers.google.com/chat/how-tos/dialogs). What to do in response to an interaction with a user, such as a user clicking button on a card message. If unspecified, the app responds by executing an `action` - like opening a link or running a function - as normal. By specifying an `interaction`, the app can respond in special interactive ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can open a [dialog](https://developers.google.com/chat/how-tos/dialogs). When specified, a loading indicator is not shown. Supported by Chat apps, but not Google Workspace Add-ons. If specified for an add-on, the entire card is stripped and nothing is shown in the client.",
+                    "description": "Optional. Required when opening a [dialog](https://developers.google.com/chat/how-tos/dialogs). What to do in response to an interaction with a user, such as a user clicking a button in a card message. If unspecified, the app responds by executing an `action`—like opening a link or running a function—as normal. By specifying an `interaction`, the app can respond in special interactive ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can open a [dialog](https://developers.google.com/chat/how-tos/dialogs). When specified, a loading indicator isn't shown. Supported by Chat apps, but not Google Workspace Add-ons. If specified for an add-on, the entire card is stripped and nothing is shown in the client.",
                     "enum": [
                         "INTERACTION_UNSPECIFIED",
                         "OPEN_DIALOG"
@@ -1168,14 +1695,14 @@
                     "type": "array"
                 },
                 "persistValues": {
-                    "description": "Indicates whether form values persist after the action. The default value is `false`. If `true`, form values remain after the action is triggered. To let the user make changes while the action is being processed, set [LoadIndicator](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) to `NONE`. For [card messages](https://developers.google.com/chat/api/guides/message-formats/cards) in Chat apps, you must also set the action's [ResponseType](https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#responsetype) to `UPDATE_MESSAGE` and use the same [`card_id`](https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#CardWithId) from the card that contained the action. If `false`, the form values are cleared when the action is triggered. To prevent the user from making changes while the action is being processed, set [LoadIndicator](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) to `SPINNER`.",
+                    "description": "Indicates whether form values persist after the action. The default value is `false`. If `true`, form values remain after the action is triggered. To let the user make changes while the action is being processed, set [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) to `NONE`. For [card messages](https://developers.google.com/chat/api/guides/message-formats/cards) in Chat apps, you must also set the action's [`ResponseType`](https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#responsetype) to `UPDATE_MESSAGE` and use the same [`card_id`](https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#CardWithId) from the card that contained the action. If `false`, the form values are cleared when the action is triggered. To prevent the user from making changes while the action is being processed, set [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) to `SPINNER`.",
                     "type": "boolean"
                 }
             },
             "type": "object"
         },
         "GoogleAppsCardV1ActionParameter": {
-            "description": "List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters. To learn more, see [CommonEventObject](https://developers.google.com/chat/api/reference/rest/v1/Event#commoneventobject).",
+            "description": "List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze one day, or snooze next week. You might use `action method = snooze()`, passing the snooze type and snooze time in the list of string parameters. To learn more, see [`CommonEventObject`](https://developers.google.com/chat/api/reference/rest/v1/Event#commoneventobject).",
             "id": "GoogleAppsCardV1ActionParameter",
             "properties": {
                 "key": {
@@ -1210,7 +1737,7 @@
                         "STROKE"
                     ],
                     "enumDescriptions": [
-                        "No value specified.",
+                        "Don't use. Unspecified.",
                         "Default value. No border.",
                         "Outline."
                     ],
@@ -1220,16 +1747,16 @@
             "type": "object"
         },
         "GoogleAppsCardV1Button": {
-            "description": "A text, icon, or text + icon button that users can click. To make an image a clickable button, specify an Image (not an ImageComponent) and set an `onClick` action.",
+            "description": "A text, icon, or text and icon button that users can click. To make an image a clickable button, specify an `Image` (not an `ImageComponent`) and set an `onClick` action.",
             "id": "GoogleAppsCardV1Button",
             "properties": {
                 "altText": {
-                    "description": "The alternative text used for accessibility. Set descriptive text that lets users know what the button does. For example, if a button opens a hyperlink, you might write: \"Opens a new browser tab and navigates to the Google Chat developer documentation at https://developers.google.com/chat\".",
+                    "description": "The alternative text that's used for accessibility. Set descriptive text that lets users know what the button does. For example, if a button opens a hyperlink, you might write: \"Opens a new browser tab and navigates to the Google Chat developer documentation at https://developers.google.com/chat\".",
                     "type": "string"
                 },
                 "color": {
                     "$ref": "Color",
-                    "description": "If set, the button is filled with a solid background color and the font color changes to maintain contrast with the background color. For example, setting a blue background will likely result in white text. If unset, the image background is white and the font color is blue. For red, green and blue, the value of each field is a `float` number that can be expressed in either of two ways: as a number between 0 and 255 divided by 255 (153/255) or as a value between 0 and 1 (0.6). 0 represents the absence of a color and 1 or 255/255 represent the full presence of that color on the RGB scale. Optionally set alpha, which sets a level of transparency using this equation: ``` pixel color = alpha * (this color) + (1.0 - alpha) * (background color) ``` For alpha, a value of 1 corresponds with a solid color, and a value of 0 corresponds with a completely transparent color. For example, the following color represents a half transparent red: ``` \"color\": { \"red\": 1, \"green\": 0, \"blue\": 0, \"alpha\": 0.5 } ```"
+                    "description": "If set, the button is filled with a solid background color and the font color changes to maintain contrast with the background color. For example, setting a blue background likely results in white text. If unset, the image background is white and the font color is blue. For red, green, and blue, the value of each field is a `float` number that you can express in either of two ways: as a number between 0 and 255 divided by 255 (153/255), or as a value between 0 and 1 (0.6). 0 represents the absence of a color and 1 or 255/255 represent the full presence of that color on the RGB scale. Optionally set `alpha`, which sets a level of transparency using this equation: ``` pixel color = alpha * (this color) + (1.0 - alpha) * (background color) ``` For `alpha`, a value of `1` corresponds with a solid color, and a value of `0` corresponds with a completely transparent color. For example, the following color represents a half transparent red: ``` \"color\": { \"red\": 1, \"green\": 0, \"blue\": 0, \"alpha\": 0.5 } ```"
                 },
                 "disabled": {
                     "description": "If `true`, the button is displayed in an inactive state and doesn't respond to user actions.",
@@ -1241,7 +1768,7 @@
                 },
                 "onClick": {
                     "$ref": "GoogleAppsCardV1OnClick",
-                    "description": "Required. The action to perform when the button is clicked, such as opening a hyperlink or running a custom function."
+                    "description": "Required. The action to perform when a user clicks the button, such as opening a hyperlink or running a custom function."
                 },
                 "text": {
                     "description": "The text displayed inside the button.",
@@ -1265,11 +1792,11 @@
             "type": "object"
         },
         "GoogleAppsCardV1Card": {
-            "description": "Cards support a defined layout, interactive UI elements like buttons, and rich media like images. Use cards to present detailed information, gather information from users, and guide users to take a next step. In Google Chat, cards appear in several places: - As stand-alone messages. - Accompanying a text message, just beneath the text message. - As a [dialog](https://developers.google.com/chat/how-tos/dialogs). The following example JSON creates a \"contact card\" that features: - A header with the contact's name, job title, avatar picture. - A section with the contact information, including formatted text. - Buttons that users can click to share the contact or see more or less info. ![Example contact card](https://developers.google.com/chat/images/card_api_reference.png) ``` { \"cardsV2\": [ { \"cardId\": \"unique-card-id\", \"card\": { \"header\": { \"title\": \"Sasha\", \"subtitle\": \"Software Engineer\", \"imageUrl\": \"https://developers.google.com/chat/images/quickstart-app-avatar.png\", \"imageType\": \"CIRCLE\", \"imageAltText\": \"Avatar for Sasha\", }, \"sections\": [ { \"header\": \"Contact Info\", \"collapsible\": true, \"uncollapsibleWidgetsCount\": 1, \"widgets\": [ { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"EMAIL\", }, \"text\": \"sasha@example.com\", } }, { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"PERSON\", }, \"text\": \"Online\", }, }, { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"PHONE\", }, \"text\": \"+1 (555) 555-1234\", } }, { \"buttonList\": { \"buttons\": [ { \"text\": \"Share\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/share\", } } }, { \"text\": \"Edit\", \"onClick\": { \"action\": { \"function\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"EDIT\", } ], } } }, ], } }, ], }, ], }, } ], } ```",
+            "description": "Cards support a defined layout, interactive UI elements like buttons, and rich media like images. Use cards to present detailed information, gather information from users, and guide users to take a next step. In Google Chat, cards appear in several places: - As stand-alone messages. - Accompanying a text message, just beneath the text message. - As a [dialog](https://developers.google.com/chat/how-tos/dialogs). The following example JSON creates a \"contact card\" that features: - A header with the contact's name, job title, and avatar picture. - A section with the contact information, including formatted text. - Buttons that users can click to share the contact, or see more or less information. ![Example contact card](https://developers.google.com/chat/images/card_api_reference.png) ``` { \"cardsV2\": [ { \"cardId\": \"unique-card-id\", \"card\": { \"header\": { \"title\": \"Sasha\", \"subtitle\": \"Software Engineer\", \"imageUrl\": \"https://developers.google.com/chat/images/quickstart-app-avatar.png\", \"imageType\": \"CIRCLE\", \"imageAltText\": \"Avatar for Sasha\", }, \"sections\": [ { \"header\": \"Contact Info\", \"collapsible\": true, \"uncollapsibleWidgetsCount\": 1, \"widgets\": [ { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"EMAIL\", }, \"text\": \"sasha@example.com\", } }, { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"PERSON\", }, \"text\": \"Online\", }, }, { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"PHONE\", }, \"text\": \"+1 (555) 555-1234\", } }, { \"buttonList\": { \"buttons\": [ { \"text\": \"Share\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/share\", } } }, { \"text\": \"Edit\", \"onClick\": { \"action\": { \"function\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"EDIT\", } ], } } }, ], } }, ], }, ], }, } ], } ```",
             "id": "GoogleAppsCardV1Card",
             "properties": {
                 "cardActions": {
-                    "description": "The card's actions. Actions are added to the card's toolbar menu. Because Chat app cards have no toolbar, `cardActions[]` is not supported by Chat apps. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` \"card_actions\": [ { \"actionLabel\": \"Settings\", \"onClick\": { \"action\": { \"functionName\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"SETTING\" } ], \"loadIndicator\": \"LoadIndicator.SPINNER\" } } }, { \"actionLabel\": \"Send Feedback\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/feedback\" } } } ] ```",
+                    "description": "The card's actions. Actions are added to the card's toolbar menu. Because Chat app cards have no toolbar, `cardActions[]` isn't supported by Chat apps. For example, the following JSON constructs a card action menu with `Settings` and `Send Feedback` options: ``` \"card_actions\": [ { \"actionLabel\": \"Settings\", \"onClick\": { \"action\": { \"functionName\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"SETTING\" } ], \"loadIndicator\": \"LoadIndicator.SPINNER\" } } }, { \"actionLabel\": \"Send Feedback\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/feedback\" } } } ] ```",
                     "items": {
                         "$ref": "GoogleAppsCardV1CardAction"
                     },
@@ -1283,7 +1810,7 @@
                         "REPLACE"
                     ],
                     "enumDescriptions": [
-                        "Do not use.",
+                        "Don't use. Unspecified.",
                         "The header of the card appears at the bottom of the sidebar, partially covering the current top card of the stack. Clicking the header pops the card into the card stack. If the card has no header, a generated header is used instead.",
                         "Default value. The card is shown by replacing the view of the top card in the card stack."
                     ],
@@ -1340,7 +1867,7 @@
                 },
                 "secondaryButton": {
                     "$ref": "GoogleAppsCardV1Button",
-                    "description": "The secondary button of the fixed footer. The button must be a text button with text and color set. `primaryButton` must be set if `secondaryButton` is set."
+                    "description": "The secondary button of the fixed footer. The button must be a text button with text and color set. If `secondaryButton` is set, you must also set `primaryButton`."
                 }
             },
             "type": "object"
@@ -1350,7 +1877,7 @@
             "id": "GoogleAppsCardV1CardHeader",
             "properties": {
                 "imageAltText": {
-                    "description": "The alternative text of this image which is used for accessibility.",
+                    "description": "The alternative text of this image that's used for accessibility.",
                     "type": "string"
                 },
                 "imageType": {
@@ -1380,43 +1907,117 @@
             },
             "type": "object"
         },
+        "GoogleAppsCardV1Column": {
+            "description": "A column.",
+            "id": "GoogleAppsCardV1Column",
+            "properties": {
+                "horizontalAlignment": {
+                    "description": "Specifies whether widgets align to the left, right, or center of a column.",
+                    "enum": [
+                        "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
+                        "START",
+                        "CENTER",
+                        "END"
+                    ],
+                    "enumDescriptions": [
+                        "Don't use. Unspecified.",
+                        "Default value. Aligns widgets to the start position of the column. For left-to-right layouts, aligns to the left. For right-to-left layouts, aligns to the right.",
+                        "Aligns widgets to the center of the column.",
+                        "Aligns widgets to the end position of the column. For left-to-right layouts, aligns widgets to the right. For right-to-left layouts, aligns widgets to the left."
+                    ],
+                    "type": "string"
+                },
+                "horizontalSizeStyle": {
+                    "description": "Specifies how a column fills the width of the card.",
+                    "enum": [
+                        "HORIZONTAL_SIZE_STYLE_UNSPECIFIED",
+                        "FILL_AVAILABLE_SPACE",
+                        "FILL_MINIMUM_SPACE"
+                    ],
+                    "enumDescriptions": [
+                        "Don't use. Unspecified.",
+                        "Default value. Column fills the available space, up to 70% of the card's width. If both columns are set to `FILL_AVAILABLE_SPACE`, each column fills 50% of the space.",
+                        "Column fills the least amount of space possible and no more than 30% of the card's width."
+                    ],
+                    "type": "string"
+                },
+                "verticalAlignment": {
+                    "description": "Specifies whether widgets align to the top, bottom, or center of a column.",
+                    "enum": [
+                        "VERTICAL_ALIGNMENT_UNSPECIFIED",
+                        "CENTER",
+                        "TOP",
+                        "BOTTOM"
+                    ],
+                    "enumDescriptions": [
+                        "Don't use. Unspecified.",
+                        "Default value. Aligns widgets to the center of a column.",
+                        "Aligns widgets to the top of a column.",
+                        "Aligns widgets to the bottom of a column."
+                    ],
+                    "type": "string"
+                },
+                "widgets": {
+                    "description": "An array of widgets included in a column. Widgets appear in the order that they are specified.",
+                    "items": {
+                        "$ref": "GoogleAppsCardV1Widgets"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleAppsCardV1Columns": {
+            "description": "The `Columns` widget displays up to 2 columns in a card message or dialog. You can add widgets to each column; the widgets appear in the order that they are specified. The height of each column is determined by the taller column. For example, if the first column is taller than the second column, both columns have the height of the first column. Because each column can contain a different number of widgets, you can't define rows or align widgets between the columns. Columns are displayed side-by-side. You can customize the width of each column using the `HorizontalSizeStyle` field. If the user's screen width is too narrow, the second column wraps below the first: * On web, the second column wraps if the screen width is less than or equal to 480 pixels. * On iOS devices, the second column wraps if the screen width is less than or equal to 300 pt. * On Android devices, the second column wraps if the screen width is less than or equal to 320 dp. To include more than 2 columns, or to use rows, use the `Grid` widget. Supported by Chat apps, but not Google Workspace Add-ons.",
+            "id": "GoogleAppsCardV1Columns",
+            "properties": {
+                "columnItems": {
+                    "description": "An array of columns. You can include up to 2 columns in a card or dialog.",
+                    "items": {
+                        "$ref": "GoogleAppsCardV1Column"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "GoogleAppsCardV1DateTimePicker": {
-            "description": "Lets users specify a date, a time, or both a date and a time. Accepts text input from users, but features an interactive date and time selector that helps users enter correctly-formatted dates and times. If users enter a date or time incorrectly, the widget shows an error that prompts users to enter the correct format. Not supported by Chat apps. Support by Chat apps coming soon.",
+            "description": "Lets users input a date, a time, or both a date and a time. Users can input text or use the picker to select dates and times. If users input an invalid date or time, the picker shows an error that prompts users to input the information correctly.",
             "id": "GoogleAppsCardV1DateTimePicker",
             "properties": {
                 "label": {
-                    "description": "The text that prompts users to enter a date, time, or datetime. Specify text that helps the user enter the information your app needs. For example, if users are setting an appointment, then a label like \"Appointment date\" or \"Appointment date and time\" might work well.",
+                    "description": "The text that prompts users to input a date, a time, or a date and time. For example, if users are scheduling an appointment, use a label such as `Appointment date` or `Appointment date and time`.",
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name by which the datetime picker is identified in a form input event. For details about working with form inputs, see [Receive form data](https://developers.google.com/chat/how-tos/dialogs#receive_form_data_from_dialogs).",
+                    "description": "The name by which the `DateTimePicker` is identified in a form input event. For details about working with form inputs, see [Receive form data](https://developers.google.com/chat/how-tos/dialogs#receive_form_data_from_dialogs).",
                     "type": "string"
                 },
                 "onChangeAction": {
                     "$ref": "GoogleAppsCardV1Action",
-                    "description": "Triggered when the user clicks **Save** or **Clear** from the datetime picker interface."
+                    "description": "Triggered when the user clicks **Save** or **Clear** from the `DateTimePicker` interface."
                 },
                 "timezoneOffsetDate": {
-                    "description": "The number representing the time zone offset from UTC, in minutes. If set, the `value_ms_epoch` is displayed in the specified time zone. If not set, it uses the user's time zone setting on the client side.",
+                    "description": "The number representing the time zone offset from UTC, in minutes. If set, the `value_ms_epoch` is displayed in the specified time zone. If unset, the value defaults to the user's time zone setting.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "type": {
-                    "description": "What kind of date and time input the datetime picker supports.",
+                    "description": "Whether the widget supports inputting a date, a time, or the date and time.",
                     "enum": [
                         "DATE_AND_TIME",
                         "DATE_ONLY",
                         "TIME_ONLY"
                     ],
                     "enumDescriptions": [
-                        "The user can select a date and time.",
-                        "The user can only select a date.",
-                        "The user can only select a time."
+                        "Users input a date and time.",
+                        "Users input a date.",
+                        "Users input a time."
                     ],
                     "type": "string"
                 },
                 "valueMsEpoch": {
-                    "description": "The value displayed as the default value before user input or previous user input, represented in milliseconds ([Epoch time](https://en.wikipedia.org/wiki/Unix_time)). For `DATE_AND_TIME` type, the full epoch value is used. For `DATE_ONLY` type, only date of the epoch time is used. For `TIME_ONLY` type, only time of the epoch time is used. For example, to represent 3:00 AM, set epoch time to `3 * 60 * 60 * 1000`.",
+                    "description": "The default value displayed in the widget, in milliseconds since [Unix epoch time](https://en.wikipedia.org/wiki/Unix_time). Specify the value based on the type of picker (`DateTimePickerType`): * `DATE_AND_TIME`: a calendar date and time in UTC. For example, to represent January 1, 2023 at 12:00 PM UTC, use `1672574400000`. * `DATE_ONLY`: a calendar date at 00:00:00 UTC. For example, to represent January 1, 2023, use `1672531200000`. * `TIME_ONLY`: a time in UTC. For example, to represent 12:00 PM, use `43200000` (or `12 * 60 * 60 * 1000`).",
                     "format": "int64",
                     "type": "string"
                 }
@@ -1424,16 +2025,16 @@
             "type": "object"
         },
         "GoogleAppsCardV1DecoratedText": {
-            "description": "A widget that displays text with optional decorations such as a label above or below the text, an icon in front of the text, a selection widget or a button after the text.",
+            "description": "A widget that displays text with optional decorations such as a label above or below the text, an icon in front of the text, a selection widget, or a button after the text.",
             "id": "GoogleAppsCardV1DecoratedText",
             "properties": {
                 "bottomLabel": {
-                    "description": "The text that appears below `text`. Always truncates.",
+                    "description": "The text that appears below `text`. Always wraps.",
                     "type": "string"
                 },
                 "button": {
                     "$ref": "GoogleAppsCardV1Button",
-                    "description": "A button that can be clicked to trigger an action."
+                    "description": "A button that a user can click to trigger an action."
                 },
                 "endIcon": {
                     "$ref": "GoogleAppsCardV1Icon",
@@ -1445,7 +2046,7 @@
                 },
                 "onClick": {
                     "$ref": "GoogleAppsCardV1OnClick",
-                    "description": "When users click on `topLabel` or `bottomLabel`, this action triggers."
+                    "description": "This action is triggered when users click `topLabel` or `bottomLabel`."
                 },
                 "startIcon": {
                     "$ref": "GoogleAppsCardV1Icon",
@@ -1453,10 +2054,10 @@
                 },
                 "switchControl": {
                     "$ref": "GoogleAppsCardV1SwitchControl",
-                    "description": "A switch widget can be clicked to change its state and trigger an action."
+                    "description": "A switch widget that a user can click to change its state and trigger an action."
                 },
                 "text": {
-                    "description": "Required. The primary text. Supports simple formatting. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+                    "description": "Required. The primary text. Supports simple formatting. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
                     "type": "string"
                 },
                 "topLabel": {
@@ -1471,13 +2072,13 @@
             "type": "object"
         },
         "GoogleAppsCardV1Divider": {
-            "description": "Displays a divider between widgets, a horizontal line. For example, the following JSON creates a divider: ``` \"divider\": {} ```",
+            "description": "Displays a divider between widgets as a horizontal line. For example, the following JSON creates a divider: ``` \"divider\": {} ```",
             "id": "GoogleAppsCardV1Divider",
             "properties": {},
             "type": "object"
         },
         "GoogleAppsCardV1Grid": {
-            "description": "Displays a grid with a collection of items. A grid supports any number of columns and items. The number of rows is determined by items divided by columns. A grid with 10 items and 2 columns has 5 rows. A grid with 11 items and 2 columns has 6 rows. For example, the following JSON creates a 2 column grid with a single item: ``` \"grid\": { \"title\": \"A fine collection of items\", \"columnCount\": 2, \"borderStyle\": { \"type\": \"STROKE\", \"cornerRadius\": 4 }, \"items\": [ { \"image\": { \"imageUri\": \"https://www.example.com/image.png\", \"cropStyle\": { \"type\": \"SQUARE\" }, \"borderStyle\": { \"type\": \"STROKE\" } }, \"title\": \"An item\", \"textAlignment\": \"CENTER\" } ], \"onClick\": { \"openLink\": { \"url\": \"https://www.example.com\" } } } ```",
+            "description": "Displays a grid with a collection of items. Items can only include text or images. A grid supports any number of columns and items. The number of rows is determined by items divided by columns. A grid with 10 items and 2 columns has 5 rows. A grid with 11 items and 2 columns has 6 rows. For responsive columns, or to include more than text or images, use `Columns`. For example, the following JSON creates a 2 column grid with a single item: ``` \"grid\": { \"title\": \"A fine collection of items\", \"columnCount\": 2, \"borderStyle\": { \"type\": \"STROKE\", \"cornerRadius\": 4 }, \"items\": [ { \"image\": { \"imageUri\": \"https://www.example.com/image.png\", \"cropStyle\": { \"type\": \"SQUARE\" }, \"borderStyle\": { \"type\": \"STROKE\" } }, \"title\": \"An item\", \"textAlignment\": \"CENTER\" } ], \"onClick\": { \"openLink\": { \"url\": \"https://www.example.com\" } } } ```",
             "id": "GoogleAppsCardV1Grid",
             "properties": {
                 "borderStyle": {
@@ -1508,11 +2109,11 @@
             "type": "object"
         },
         "GoogleAppsCardV1GridItem": {
-            "description": "Represents a single item in the grid layout.",
+            "description": "Represents an item in a grid layout. Items can contain text, an image, or both text and an image.",
             "id": "GoogleAppsCardV1GridItem",
             "properties": {
                 "id": {
-                    "description": "A user-specified identifier for this grid item. This identifier is returned in the parent Grid's onClick callback parameters.",
+                    "description": "A user-specified identifier for this grid item. This identifier is returned in the parent grid's `onClick` callback parameters.",
                     "type": "string"
                 },
                 "image": {
@@ -1527,7 +2128,7 @@
                         "TEXT_ABOVE"
                     ],
                     "enumDescriptions": [
-                        "No layout specified.",
+                        "Don't use. Unspecified.",
                         "The title and subtitle are shown below the grid item's image.",
                         "The title and subtitle are shown above the grid item's image."
                     ],
@@ -1549,7 +2150,7 @@
             "id": "GoogleAppsCardV1Icon",
             "properties": {
                 "altText": {
-                    "description": "Optional. A description of the icon used for accessibility. If unspecified, the default value \"Button\" is provided. As a best practice, you should set a helpful description for what the icon displays, and if applicable, what it does. For example, `A user's account portrait`, or `Opens a new browser tab and navigates to the Google Chat developer documentation at https://developers.google.com/chat`. If the icon is set in a Button, the `altText` appears as helper text when the user hovers over the button. However, if the button also sets `text`, the icon's `altText` is ignored.",
+                    "description": "Optional. A description of the icon used for accessibility. If unspecified, the default value `Button` is provided. As a best practice, you should set a helpful description for what the icon displays, and if applicable, what it does. For example, `A user's account portrait`, or `Opens a new browser tab and navigates to the Google Chat developer documentation at https://developers.google.com/chat`. If the icon is set in a `Button`, the `altText` appears as helper text when the user hovers over the button. However, if the button also sets `text`, the icon's `altText` is ignored.",
                     "type": "string"
                 },
                 "iconUrl": {
@@ -1580,16 +2181,16 @@
             "id": "GoogleAppsCardV1Image",
             "properties": {
                 "altText": {
-                    "description": "The alternative text of this image, used for accessibility.",
+                    "description": "The alternative text of this image that's used for accessibility.",
                     "type": "string"
                 },
                 "imageUrl": {
-                    "description": "The `https` URL that hosts the image. For example: ``` https://developers.google.com/chat/images/quickstart-app-avatar.png ```",
+                    "description": "The HTTPS URL that hosts the image. For example: ``` https://developers.google.com/chat/images/quickstart-app-avatar.png ```",
                     "type": "string"
                 },
                 "onClick": {
                     "$ref": "GoogleAppsCardV1OnClick",
-                    "description": "When a user clicks on the image, the click triggers this action."
+                    "description": "When a user clicks the image, the click triggers this action."
                 }
             },
             "type": "object"
@@ -1618,11 +2219,11 @@
             "type": "object"
         },
         "GoogleAppsCardV1ImageCropStyle": {
-            "description": "Represents the crop style applied to an image. For example, here's how to apply a 16 by 9 aspect ratio: ``` cropStyle { \"type\": \"RECTANGLE_CUSTOM\", \"aspectRatio\": 16/9 } ```",
+            "description": "Represents the crop style applied to an image. For example, here's how to apply a 16:9 aspect ratio: ``` cropStyle { \"type\": \"RECTANGLE_CUSTOM\", \"aspectRatio\": 16/9 } ```",
             "id": "GoogleAppsCardV1ImageCropStyle",
             "properties": {
                 "aspectRatio": {
-                    "description": "The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`. For example, here's how to apply a 16 by 9 aspect ratio: ``` cropStyle { \"type\": \"RECTANGLE_CUSTOM\", \"aspectRatio\": 16/9 } ```",
+                    "description": "The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`. For example, here's how to apply a 16:9 aspect ratio: ``` cropStyle { \"type\": \"RECTANGLE_CUSTOM\", \"aspectRatio\": 16/9 } ```",
                     "format": "double",
                     "type": "number"
                 },
@@ -1636,7 +2237,7 @@
                         "RECTANGLE_4_3"
                     ],
                     "enumDescriptions": [
-                        "No value specified. Do not use.",
+                        "Don't use. Unspecified.",
                         "Default value. Applies a square crop.",
                         "Applies a circular crop.",
                         "Applies a rectangular crop with a custom aspect ratio. Set the custom aspect ratio with `aspectRatio`.",
@@ -1681,8 +2282,8 @@
                         "RELOAD"
                     ],
                     "enumDescriptions": [
-                        "Default value. The card does not reload; nothing happens.",
-                        "Reloads the card after the child window closes. If used in conjunction with [OpenAs.OVERLAY](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#openas), the child window acts as a modal dialog and the parent card is blocked until the child window closes."
+                        "Default value. The card doesn't reload; nothing happens.",
+                        "Reloads the card after the child window closes. If used in conjunction with [`OpenAs.OVERLAY`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#openas), the child window acts as a modal dialog and the parent card is blocked until the child window closes."
                     ],
                     "type": "string"
                 },
@@ -1693,7 +2294,7 @@
                         "OVERLAY"
                     ],
                     "enumDescriptions": [
-                        "The link opens as a full size window (if that's the frame used by the client.",
+                        "The link opens as a full-size window (if that's the frame used by the client).",
                         "The link opens as an overlay, such as a pop-up."
                     ],
                     "type": "string"
@@ -1706,7 +2307,7 @@
             "type": "object"
         },
         "GoogleAppsCardV1Section": {
-            "description": "A section contains a collection of widgets that are rendered vertically in the order that they are specified.",
+            "description": "A section contains a collection of widgets that are rendered vertically in the order that they're specified.",
             "id": "GoogleAppsCardV1Section",
             "properties": {
                 "collapsible": {
@@ -1714,7 +2315,7 @@
                     "type": "boolean"
                 },
                 "header": {
-                    "description": "Text that appears at the top of a section. Supports simple HTML formatted text. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+                    "description": "Text that appears at the top of a section. Supports simple HTML formatted text. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
                     "type": "string"
                 },
                 "uncollapsibleWidgetsCount": {
@@ -1723,7 +2324,7 @@
                     "type": "integer"
                 },
                 "widgets": {
-                    "description": "All the widgets in the section. Must contain at least 1 widget.",
+                    "description": "All the widgets in the section. Must contain at least one widget.",
                     "items": {
                         "$ref": "GoogleAppsCardV1Widget"
                     },
@@ -1779,7 +2380,7 @@
             "id": "GoogleAppsCardV1SelectionItem",
             "properties": {
                 "selected": {
-                    "description": "When `true`, more than one item is selected. If more than one item is selected for radio buttons and dropdown menus, the first selected item is received and the ones after are ignored.",
+                    "description": "Whether the item is selected by default. If the selection input only accepts one value (such as for radio buttons or a dropdown menu), only set this field for one item.",
                     "type": "boolean"
                 },
                 "text": {
@@ -1798,14 +2399,14 @@
             "id": "GoogleAppsCardV1SuggestionItem",
             "properties": {
                 "text": {
-                    "description": "The value of a suggested input to a text input field. This is equivalent to what users would enter themselves.",
+                    "description": "The value of a suggested input to a text input field. This is equivalent to what users enter themselves.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
         "GoogleAppsCardV1Suggestions": {
-            "description": "Suggested values that users can enter. These values appear when users click inside the text input field. As users type, the suggested values dynamically filter to match what the users have typed. For example, a text input field for programming language might suggest Java, JavaScript, Python, and C++. When users start typing \"Jav\", the list of suggestions filters to show just Java and JavaScript. Suggested values help guide users to enter values that your app can make sense of. When referring to JavaScript, some users might enter \"javascript\" and others \"java script\". Suggesting \"JavaScript\" can standardize how users interact with your app. When specified, `TextInput.type` is always `SINGLE_LINE`, even if it is set to `MULTIPLE_LINE`.",
+            "description": "Suggested values that users can enter. These values appear when users click inside the text input field. As users type, the suggested values dynamically filter to match what the users have typed. For example, a text input field for programming language might suggest Java, JavaScript, Python, and C++. When users start typing `Jav`, the list of suggestions filters to show `Java` and `JavaScript`. Suggested values help guide users to enter values that your app can make sense of. When referring to JavaScript, some users might enter `javascript` and others `java script`. Suggesting `JavaScript` can standardize how users interact with your app. When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set to `MULTIPLE_LINE`.",
             "id": "GoogleAppsCardV1Suggestions",
             "properties": {
                 "items": {
@@ -1819,7 +2420,7 @@
             "type": "object"
         },
         "GoogleAppsCardV1SwitchControl": {
-            "description": "Either a toggle-style switch or a checkbox inside a `decoratedText` widget. Only supported on the `decoratedText` widget.",
+            "description": "Either a toggle-style switch or a checkbox inside a `decoratedText` widget. Only supported in the `decoratedText` widget.",
             "id": "GoogleAppsCardV1SwitchControl",
             "properties": {
                 "controlType": {
@@ -1869,10 +2470,10 @@
                 },
                 "initialSuggestions": {
                     "$ref": "GoogleAppsCardV1Suggestions",
-                    "description": "Suggested values that users can enter. These values appear when users click inside the text input field. As users type, the suggested values dynamically filter to match what the users have typed. For example, a text input field for programming language might suggest Java, JavaScript, Python, and C++. When users start typing \"Jav\", the list of suggestions filters to show just Java and JavaScript. Suggested values help guide users to enter values that your app can make sense of. When referring to JavaScript, some users might enter \"javascript\" and others \"java script\". Suggesting \"JavaScript\" can standardize how users interact with your app. When specified, `TextInput.type` is always `SINGLE_LINE`, even if it is set to `MULTIPLE_LINE`."
+                    "description": "Suggested values that users can enter. These values appear when users click inside the text input field. As users type, the suggested values dynamically filter to match what the users have typed. For example, a text input field for programming language might suggest Java, JavaScript, Python, and C++. When users start typing `Jav`, the list of suggestions filters to show just `Java` and `JavaScript`. Suggested values help guide users to enter values that your app can make sense of. When referring to JavaScript, some users might enter `javascript` and others `java script`. Suggesting `JavaScript` can standardize how users interact with your app. When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set to `MULTIPLE_LINE`."
                 },
                 "label": {
-                    "description": "The text that appears above the text input field in the user interface. Specify text that helps the user enter the information your app needs. For example, if you are asking someone's name, but specifically need their surname, write \"surname\" instead of \"name\". Required if `hintText` is unspecified. Otherwise, optional.",
+                    "description": "The text that appears above the text input field in the user interface. Specify text that helps the user enter the information your app needs. For example, if you are asking someone's name, but specifically need their surname, write `surname` instead of `name`. Required if `hintText` is unspecified. Otherwise, optional.",
                     "type": "string"
                 },
                 "name": {
@@ -1881,7 +2482,7 @@
                 },
                 "onChangeAction": {
                     "$ref": "GoogleAppsCardV1Action",
-                    "description": "What to do when a change occurs in the text input field. Examples of changes include a user adding to the field, or deleting text. Examples of actions to take include running a custom function or opening a [dialog](https://developers.google.com/chat/how-tos/dialogs) in Google Chat."
+                    "description": "What to do when a change occurs in the text input field. For example, a user adding to the field or deleting text. Examples of actions to take include running a custom function or opening a [dialog](https://developers.google.com/chat/how-tos/dialogs) in Google Chat."
                 },
                 "type": {
                     "description": "How a text input field appears in the user interface. For example, whether the field is single or multi-line.",
@@ -1903,7 +2504,7 @@
             "type": "object"
         },
         "GoogleAppsCardV1TextParagraph": {
-            "description": "A paragraph of text that supports formatting. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+            "description": "A paragraph of text that supports formatting. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
             "id": "GoogleAppsCardV1TextParagraph",
             "properties": {
                 "text": {
@@ -1921,9 +2522,13 @@
                     "$ref": "GoogleAppsCardV1ButtonList",
                     "description": "A list of buttons. For example, the following JSON creates two buttons. The first is a blue text button and the second is an image button that opens a link: ``` \"buttonList\": { \"buttons\": [ { \"text\": \"Edit\", \"color\": { \"red\": 0, \"green\": 0, \"blue\": 1, \"alpha\": 1 }, \"disabled\": true, }, { \"icon\": { \"knownIcon\": \"INVITE\", \"altText\": \"check calendar\" }, \"onClick\": { \"openLink\": { \"url\": \"https://example.com/calendar\" } } } ] } ```"
                 },
+                "columns": {
+                    "$ref": "GoogleAppsCardV1Columns",
+                    "description": "Displays up to 2 columns. To include more than 2 columns, or to use rows, use the `Grid` widget. For example, the following JSON creates 2 columns that each contain text paragraphs: ``` \"columns\": { \"columnItems\": [ { \"horizontalSizeStyle\": \"FILL_AVAILABLE_SPACE\", \"horizontalAlignment\": \"CENTER\", \"verticalAlignment\": \"CENTER\", \"widgets\": [ { \"textParagraph\": { \"text\": \"First column text paragraph\" } } ] }, { \"horizontalSizeStyle\": \"FILL_AVAILABLE_SPACE\", \"horizontalAlignment\": \"CENTER\", \"verticalAlignment\": \"CENTER\", \"widgets\": [ { \"textParagraph\": { \"text\": \"Second column text paragraph\" } } ] } ] } ```"
+                },
                 "dateTimePicker": {
                     "$ref": "GoogleAppsCardV1DateTimePicker",
-                    "description": "Displays a selection/input widget for date, time, or date and time. Not supported by Chat apps. Support by Chat apps is coming soon. For example, the following JSON creates a datetime picker to schedule an appointment: ``` \"dateTimePicker\": { \"name\": \"appointment_time\", \"label\": \"Book your appointment at:\", \"type\": \"DATE_AND_TIME\", \"valueMsEpoch\": \"796435200000\" } ```"
+                    "description": "Displays a widget that lets users input a date, time, or date and time. For example, the following JSON creates a date time picker to schedule an appointment: ``` \"dateTimePicker\": { \"name\": \"appointment_time\", \"label\": \"Book your appointment at:\", \"type\": \"DATE_AND_TIME\", \"valueMsEpoch\": \"796435200000\" } ```"
                 },
                 "decoratedText": {
                     "$ref": "GoogleAppsCardV1DecoratedText",
@@ -1937,6 +2542,22 @@
                     "$ref": "GoogleAppsCardV1Grid",
                     "description": "Displays a grid with a collection of items. A grid supports any number of columns and items. The number of rows is determined by the upper bounds of the number items divided by the number of columns. A grid with 10 items and 2 columns has 5 rows. A grid with 11 items and 2 columns has 6 rows. For example, the following JSON creates a 2 column grid with a single item: ``` \"grid\": { \"title\": \"A fine collection of items\", \"columnCount\": 2, \"borderStyle\": { \"type\": \"STROKE\", \"cornerRadius\": 4 }, \"items\": [ { \"image\": { \"imageUri\": \"https://www.example.com/image.png\", \"cropStyle\": { \"type\": \"SQUARE\" }, \"borderStyle\": { \"type\": \"STROKE\" } }, \"title\": \"An item\", \"textAlignment\": \"CENTER\" } ], \"onClick\": { \"openLink\": { \"url\": \"https://www.example.com\" } } } ```"
                 },
+                "horizontalAlignment": {
+                    "description": "Specifies whether widgets align to the left, right, or center of a column.",
+                    "enum": [
+                        "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
+                        "START",
+                        "CENTER",
+                        "END"
+                    ],
+                    "enumDescriptions": [
+                        "Don't use. Unspecified.",
+                        "Default value. Aligns widgets to the start position of the column. For left-to-right layouts, aligns to the left. For right-to-left layouts, aligns to the right.",
+                        "Aligns widgets to the center of the column.",
+                        "Aligns widgets to the end position of the column. For left-to-right layouts, aligns widgets to the right. For right-to-left layouts, aligns widgets to the left."
+                    ],
+                    "type": "string"
+                },
                 "image": {
                     "$ref": "GoogleAppsCardV1Image",
                     "description": "Displays an image. For example, the following JSON creates an image with alternative text: ``` \"image\": { \"imageUrl\": \"https://developers.google.com/chat/images/quickstart-app-avatar.png\", \"altText\": \"Chat app avatar\" } ```"
@@ -1951,17 +2572,52 @@
                 },
                 "textParagraph": {
                     "$ref": "GoogleAppsCardV1TextParagraph",
-                    "description": "Displays a text paragraph. Supports simple HTML formatted text. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons. For example, the following JSON creates a bolded text: ``` \"textParagraph\": { \"text\": \" *bold text*\" } ```"
+                    "description": "Displays a text paragraph. Supports simple HTML formatted text. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting). For example, the following JSON creates a bolded text: ``` \"textParagraph\": { \"text\": \" *bold text*\" } ```"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleAppsCardV1Widgets": {
+            "description": "The supported widgets that you can include in a column.",
+            "id": "GoogleAppsCardV1Widgets",
+            "properties": {
+                "buttonList": {
+                    "$ref": "GoogleAppsCardV1ButtonList",
+                    "description": "ButtonList widget."
+                },
+                "dateTimePicker": {
+                    "$ref": "GoogleAppsCardV1DateTimePicker",
+                    "description": "DateTimePicker widget."
+                },
+                "decoratedText": {
+                    "$ref": "GoogleAppsCardV1DecoratedText",
+                    "description": "DecoratedText widget."
+                },
+                "image": {
+                    "$ref": "GoogleAppsCardV1Image",
+                    "description": "Image widget."
+                },
+                "selectionInput": {
+                    "$ref": "GoogleAppsCardV1SelectionInput",
+                    "description": "SelectionInput widget."
+                },
+                "textInput": {
+                    "$ref": "GoogleAppsCardV1TextInput",
+                    "description": "TextInput widget."
+                },
+                "textParagraph": {
+                    "$ref": "GoogleAppsCardV1TextParagraph",
+                    "description": "TextParagraph widget."
                 }
             },
             "type": "object"
         },
         "Image": {
-            "description": "An image that is specified by a URL and can have an onclick action.",
+            "description": "An image that's specified by a URL and can have an `onclick` action.",
             "id": "Image",
             "properties": {
                 "aspectRatio": {
-                    "description": "The aspect ratio of this image (width/height). This field allows clients to reserve the right height for the image while waiting for it to load. It's not meant to override the native aspect ratio of the image. If unset, the server fills it by prefetching the image.",
+                    "description": "The aspect ratio of this image (width and height). This field lets you reserve the right height for the image while waiting for it to load. It's not meant to override the built-in aspect ratio of the image. If unset, the server fills it by prefetching the image.",
                     "format": "double",
                     "type": "number"
                 },
@@ -1971,17 +2627,17 @@
                 },
                 "onClick": {
                     "$ref": "OnClick",
-                    "description": "The onclick action."
+                    "description": "The `onclick` action."
                 }
             },
             "type": "object"
         },
         "ImageButton": {
-            "description": "An image button with an onclick action.",
+            "description": "An image button with an `onclick` action.",
             "id": "ImageButton",
             "properties": {
                 "icon": {
-                    "description": "The icon specified by an enum that indices to an icon provided by Chat API.",
+                    "description": "The icon specified by an `enum` that indices to an icon provided by Chat API.",
                     "enum": [
                         "ICON_UNSPECIFIED",
                         "AIRPLANE",
@@ -2055,12 +2711,12 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name of this image_button which will be used for accessibility. Default value will be provided if developers don't specify.",
+                    "description": "The name of this `image_button` that's used for accessibility. Default value is provided if this name isn't specified.",
                     "type": "string"
                 },
                 "onClick": {
                     "$ref": "OnClick",
-                    "description": "The onclick action."
+                    "description": "The `onclick` action."
                 }
             },
             "type": "object"
@@ -2089,11 +2745,11 @@
             "type": "object"
         },
         "KeyValue": {
-            "description": "A UI element contains a key (label) and a value (content). And this element may also contain some actions such as onclick button.",
+            "description": "A UI element contains a key (label) and a value (content). This element can also contain some actions such as `onclick` button.",
             "id": "KeyValue",
             "properties": {
                 "bottomLabel": {
-                    "description": "The text of the bottom label. Formatted text supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+                    "description": "The text of the bottom label. Formatted text supported. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
                     "type": "string"
                 },
                 "button": {
@@ -2101,7 +2757,7 @@
                     "description": "A button that can be clicked to trigger an action."
                 },
                 "content": {
-                    "description": "The text of the content. Formatted text supported and always required. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+                    "description": "The text of the content. Formatted text supported and always required. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
                     "type": "string"
                 },
                 "contentMultiline": {
@@ -2109,7 +2765,7 @@
                     "type": "boolean"
                 },
                 "icon": {
-                    "description": "An enum value that will be replaced by the Chat API with the corresponding icon image.",
+                    "description": "An enum value that's replaced by the Chat API with the corresponding icon image.",
                     "enum": [
                         "ICON_UNSPECIFIED",
                         "AIRPLANE",
@@ -2184,10 +2840,10 @@
                 },
                 "onClick": {
                     "$ref": "OnClick",
-                    "description": "The onclick action. Only the top label, bottom label and content region are clickable."
+                    "description": "The `onclick` action. Only the top label, bottom label, and content region are clickable."
                 },
                 "topLabel": {
-                    "description": "The text of the top label. Formatted text supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+                    "description": "The text of the top label. Formatted text supported. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
                     "type": "string"
                 }
             },
@@ -2204,17 +2860,51 @@
                     "type": "array"
                 },
                 "nextPageToken": {
-                    "description": "A token that can be sent as `pageToken` to retrieve the next page of results. If empty, there are no subsequent pages.",
+                    "description": "A token that you can send as `pageToken` to retrieve the next page of results. If empty, there are no subsequent pages.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
+        "ListMessagesResponse": {
+            "id": "ListMessagesResponse",
+            "properties": {
+                "messages": {
+                    "description": "List of messages.",
+                    "items": {
+                        "$ref": "Message"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "You can send a token as `pageToken` to retrieve the next page of results. If empty, there are no subsequent pages.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListReactionsResponse": {
+            "id": "ListReactionsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Continuation token to retrieve the next page of results. It's empty for the last page of results.",
+                    "type": "string"
+                },
+                "reactions": {
+                    "description": "List of reactions in the requested (or first) page.",
+                    "items": {
+                        "$ref": "Reaction"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ListSpacesResponse": {
             "id": "ListSpacesResponse",
             "properties": {
                 "nextPageToken": {
-                    "description": "A token that can be sent as `pageToken` to retrieve the next page of results. If empty, there are no subsequent pages.",
+                    "description": "You can send a token as `pageToken` to retrieve the next page of results. If empty, there are no subsequent pages.",
                     "type": "string"
                 },
                 "spaces": {
@@ -2228,11 +2918,11 @@
             "type": "object"
         },
         "MatchedUrl": {
-            "description": "A matched url in a Chat message. Chat apps can preview matched URLs. For more information, refer to [Preview links](https://developers.google.com/chat/how-tos/preview-links).",
+            "description": "A matched URL in a Chat message. Chat apps can preview matched URLs. For more information, see [Preview links](https://developers.google.com/chat/how-tos/preview-links).",
             "id": "MatchedUrl",
             "properties": {
                 "url": {
-                    "description": "Output only. The url that was matched.",
+                    "description": "Output only. The URL that was matched.",
                     "readOnly": true,
                     "type": "string"
                 }
@@ -2265,7 +2955,7 @@
                     "description": "The Google Chat user or app the membership corresponds to. If your Chat app [authenticates as a user](https://developers.google.com/chat/api/guides/auth/users), the output populates the [user](https://developers.google.com/chat/api/reference/rest/v1/User) `name` and `type`."
                 },
                 "name": {
-                    "description": "Resource name of the membership, assigned by the server. Format: spaces/{space}/members/{member}",
+                    "description": "Resource name of the membership, assigned by the server. Format: `spaces/{space}/members/{member}`",
                     "type": "string"
                 },
                 "role": {
@@ -2276,9 +2966,9 @@
                         "ROLE_MANAGER"
                     ],
                     "enumDescriptions": [
-                        "Default value. The user isn't a member of the space, but might be invited.",
+                        "Default value. For users: they aren't a member of the space, but can be invited. For Google Groups: they're always assigned this role (other enum values might be used in the future).",
                         "A member of the space. The user has basic permissions, like sending messages to the space. In 1:1 and unnamed group conversations, everyone has this role.",
-                        "A space manager. The user has all basic permissions plus administrative permissions that allow them to manage the space, like adding or removing members. Only supported in SpaceType.SPACE."
+                        "A space manager. The user has all basic permissions plus administrative permissions that let them manage the space, like adding or removing members. Only supported in SpaceType.SPACE."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -2292,10 +2982,10 @@
                         "NOT_A_MEMBER"
                     ],
                     "enumDescriptions": [
-                        "Default, do not use.",
+                        "Default, don't use.",
                         "The user has joined the space.",
-                        "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."
+                        "The user has been invited, is able to join the space, but currently hasn't joined.",
+                        "The user isn't a member of the space, hasn't been invited and isn't able to join the space."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -2312,7 +3002,7 @@
                     "description": "Input only. Parameters that a Chat app can use to configure how its response is posted."
                 },
                 "annotations": {
-                    "description": "Output only. Annotations associated with the text in this message.",
+                    "description": "Output only. Annotations associated with the `text` in this message.",
                     "items": {
                         "$ref": "Annotation"
                     },
@@ -2324,6 +3014,14 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "attachedGifs": {
+                    "description": "Output only. GIF images that are attached to the message.",
+                    "items": {
+                        "$ref": "AttachedGif"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
                 "attachment": {
                     "description": "User-uploaded attachment.",
                     "items": {
@@ -2332,7 +3030,7 @@
                     "type": "array"
                 },
                 "cards": {
-                    "description": "Deprecated: Use `cards_v2` instead. Rich, formatted and interactive cards that can be used to display UI elements such as: formatted texts, buttons, clickable images. Cards are normally displayed below the plain-text body of the message. `cards` and `cards_v2` can have a maximum size of 32 KB.",
+                    "description": "Deprecated: Use `cards_v2` instead. Rich, formatted, and interactive cards that you can use to display UI elements such as: formatted texts, buttons, and clickable images. Cards are normally displayed below the plain-text body of the message. `cards` and `cards_v2` can have a maximum size of 32 KB.",
                     "items": {
                         "$ref": "Card"
                     },
@@ -2346,17 +3044,35 @@
                     "type": "array"
                 },
                 "clientAssignedMessageId": {
-                    "description": "A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).",
+                    "description": "A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. Assigning a custom name lets a Chat app recall the message without saving the message `name` from the [response body](/chat/api/reference/rest/v1/spaces.messages/get#response-body) returned when creating the message. Assigning a custom name doesn't replace the generated `name` field, the message's resource name. Instead, it sets the custom name as the `clientAssignedMessageId` field, which you can reference while processing later operations, like updating or deleting the message. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/v1/messages/create#name_a_created_message).",
                     "type": "string"
                 },
                 "createTime": {
-                    "description": "Output only. The time at which the message was created in Google Chat server.",
+                    "description": "For spaces created in Chat, the time at which the message was created. This field is output only, except when used in imported spaces. [Developer Preview](https://developers.google.com/workspace/preview): For imported spaces, set this field to the historical timestamp at which the message was created in the source in order to preserve the original creation time.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "deleteTime": {
+                    "description": "Output only. The time at which the message was deleted in Google Chat. If the message is never deleted, this field is empty.",
                     "format": "google-datetime",
                     "readOnly": true,
                     "type": "string"
                 },
+                "deletionMetadata": {
+                    "$ref": "DeletionMetadata",
+                    "description": "Output only. Information about a deleted message. A message is deleted when `delete_time` is set.",
+                    "readOnly": true
+                },
+                "emojiReactionSummaries": {
+                    "description": "Output only. The list of emoji reaction summaries on the message.",
+                    "items": {
+                        "$ref": "EmojiReactionSummary"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
                 "fallbackText": {
-                    "description": "A plain-text description of the message's cards, used when the actual cards cannot be displayed (e.g. mobile notifications).",
+                    "description": "A plain-text description of the message's cards, used when the actual cards can't be displayed—for example, mobile notifications.",
                     "type": "string"
                 },
                 "lastUpdateTime": {
@@ -2367,13 +3083,18 @@
                 },
                 "matchedUrl": {
                     "$ref": "MatchedUrl",
-                    "description": "Output only. A URL in `spaces.messages.text` that matches a link preview pattern. For more information, refer to [Preview links](https://developers.google.com/chat/how-tos/preview-links).",
+                    "description": "Output only. A URL in `spaces.messages.text` that matches a link preview pattern. For more information, see [Preview links](https://developers.google.com/chat/how-tos/preview-links).",
                     "readOnly": true
                 },
                 "name": {
                     "description": "Resource name in the form `spaces/*/messages/*`. Example: `spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB`",
                     "type": "string"
                 },
+                "quotedMessageMetadata": {
+                    "$ref": "QuotedMessageMetadata",
+                    "description": "Output only. Information about a message that's quoted by a Google Chat user in a space. Google Chat users can quote a message to reply to it.",
+                    "readOnly": true
+                },
                 "sender": {
                     "$ref": "User",
                     "description": "Output only. The user who created the message. If your Chat app [authenticates as a user](https://developers.google.com/chat/api/guides/auth/users), the output populates the [user](https://developers.google.com/chat/api/reference/rest/v1/User) `name` and `type`.",
@@ -2405,16 +3126,16 @@
             "type": "object"
         },
         "OnClick": {
-            "description": "An onclick action (e.g. open a link).",
+            "description": "An `onclick` action (for example, open a link).",
             "id": "OnClick",
             "properties": {
                 "action": {
                     "$ref": "FormAction",
-                    "description": "A form action will be triggered by this onclick if specified."
+                    "description": "A form action is triggered by this `onclick` action if specified."
                 },
                 "openLink": {
                     "$ref": "OpenLink",
-                    "description": "This onclick triggers an open link action if specified."
+                    "description": "This `onclick` action triggers an open link action if specified."
                 }
             },
             "type": "object"
@@ -2430,16 +3151,54 @@
             },
             "type": "object"
         },
+        "QuotedMessageMetadata": {
+            "description": "Information about a quoted message.",
+            "id": "QuotedMessageMetadata",
+            "properties": {
+                "lastUpdateTime": {
+                    "description": "Output only. The timestamp when the quoted message was created or when the quoted message was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. Resource name of the quoted message. Format: `spaces/{space}/messages/{message}`",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Reaction": {
+            "description": "A reaction to a message.",
+            "id": "Reaction",
+            "properties": {
+                "emoji": {
+                    "$ref": "Emoji",
+                    "description": "The emoji used in the reaction."
+                },
+                "name": {
+                    "description": "The resource name of the reaction. Format: `spaces/{space}/messages/{message}/reactions/{reaction}`",
+                    "type": "string"
+                },
+                "user": {
+                    "$ref": "User",
+                    "description": "Output only. The user who created the reaction.",
+                    "readOnly": true
+                }
+            },
+            "type": "object"
+        },
         "Section": {
-            "description": "A section contains a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there is currently no need for layout properties (e.g. float).",
+            "description": "A section contains a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there's currently no need for layout properties (for example, float).",
             "id": "Section",
             "properties": {
                 "header": {
-                    "description": "The header of the section. Formatted text is supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+                    "description": "The header of the section. Formatted text is supported. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
                     "type": "string"
                 },
                 "widgets": {
-                    "description": "A section must contain at least 1 widget.",
+                    "description": "A section must contain at least one widget.",
                     "items": {
                         "$ref": "WidgetMarkup"
                     },
@@ -2448,12 +3207,33 @@
             },
             "type": "object"
         },
+        "SetUpSpaceRequest": {
+            "id": "SetUpSpaceRequest",
+            "properties": {
+                "memberships": {
+                    "description": "Optional. The initial set of in-domain users invited to join the space. The calling user is automatically added to the space, and shouldn't be specified as a membership. The set currently allows up to 20 memberships (in addition to the caller). The `Membership.member` field must contain a user with `name` populated and `User.Type.HUMAN`. All other fields are ignored. Optional when setting `Space.spaceType` to `SPACE`. Required when setting `Space.spaceType` to `GROUP_CHAT`, along with at least two memberships. Required when setting `Space.spaceType` to `DIRECT_MESSAGE` with a human user, along with exactly one membership. Must be empty when creating a 1:1 conversation between a human and the calling Chat app (when setting `Space.spaceType` to `DIRECT_MESSAGE` and `Space.singleUserBotDm` to `true`). Not supported: Inviting guest users, or adding other Chat apps.",
+                    "items": {
+                        "$ref": "Membership"
+                    },
+                    "type": "array"
+                },
+                "requestId": {
+                    "description": "Optional. A unique identifier for this request. A random UUID is recommended. Specifying an existing request ID returns the space created with that ID instead of creating a new space. Specifying an existing request ID from the same Chat app with a different authenticated user returns an error.",
+                    "type": "string"
+                },
+                "space": {
+                    "$ref": "Space",
+                    "description": "Required. The `Space.spaceType` field is required. To create a space, set `Space.spaceType` to `SPACE` and set `Space.displayName`. To create a group chat, set `Space.spaceType` to `GROUP_CHAT`. Don't set `Space.displayName`. To create a 1:1 conversation between humans, set `Space.spaceType` to `DIRECT_MESSAGE` and set `Space.singleUserBotDm` to `false`. Don't set `Space.displayName` or `Space.spaceDetails`. To create an 1:1 conversation between a human and the calling Chat app, set `Space.spaceType` to `DIRECT_MESSAGE` and `Space.singleUserBotDm` to `true`. Don't set `Space.displayName` or `Space.spaceDetails`. If a `DIRECT_MESSAGE` space already exists, that space is returned instead of creating a new space."
+                }
+            },
+            "type": "object"
+        },
         "SlashCommand": {
             "description": "A [slash command](https://developers.google.com/chat/how-tos/slash-commands) in Google Chat.",
             "id": "SlashCommand",
             "properties": {
                 "commandId": {
-                    "description": "The id of the slash command invoked.",
+                    "description": "The ID of the slash command invoked.",
                     "format": "int64",
                     "type": "string"
                 }
@@ -2469,7 +3249,7 @@
                     "description": "The Chat app whose command was invoked."
                 },
                 "commandId": {
-                    "description": "The command id of the invoked slash command.",
+                    "description": "The command ID of the invoked slash command.",
                     "format": "int64",
                     "type": "string"
                 },
@@ -2478,7 +3258,7 @@
                     "type": "string"
                 },
                 "triggersDialog": {
-                    "description": "Indicating whether the slash command is for a dialog.",
+                    "description": "Indicates whether the slash command is for a dialog.",
                     "type": "boolean"
                 },
                 "type": {
@@ -2489,7 +3269,7 @@
                         "INVOKE"
                     ],
                     "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
+                        "Default value for the enum. Don't use.",
                         "Add Chat app to space.",
                         "Invoke slash command in space."
                     ],
@@ -2508,11 +3288,11 @@
                     "type": "boolean"
                 },
                 "displayName": {
-                    "description": "The space's display name. Required when [creating a space](https://developers.google.com/chat/api/reference/rest/v1/spaces/create). For direct messages, this field may be empty. Supports up to 128 characters.",
+                    "description": "The space's display name. Required when [creating a space](https://developers.google.com/chat/api/reference/rest/v1/spaces/create). For direct messages, this field might be empty. Supports up to 128 characters.",
                     "type": "string"
                 },
                 "name": {
-                    "description": "Resource name of the space. Format: spaces/{space}",
+                    "description": "Resource name of the space. Format: `spaces/{space}`",
                     "type": "string"
                 },
                 "singleUserBotDm": {
@@ -2523,6 +3303,20 @@
                     "$ref": "SpaceDetails",
                     "description": "Details about the space including description and rules."
                 },
+                "spaceHistoryState": {
+                    "description": "The message history state for messages and threads in this space.",
+                    "enum": [
+                        "HISTORY_STATE_UNSPECIFIED",
+                        "HISTORY_OFF",
+                        "HISTORY_ON"
+                    ],
+                    "enumDescriptions": [
+                        "Default value. Do not use.",
+                        "History off. [Messages and threads are kept for 24 hours](https://support.google.com/chat/answer/7664687).",
+                        "History on. The organization's [Vault retention rules](https://support.google.com/vault/answer/7657597) specify for how long messages and threads are kept."
+                    ],
+                    "type": "string"
+                },
                 "spaceThreadingState": {
                     "description": "Output only. The threading state in the Chat space.",
                     "enum": [
@@ -2540,13 +3334,29 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "spaceType": {
+                    "description": "The type of space. Required when creating a space or updating the space type of a space. Output only for other usage.",
+                    "enum": [
+                        "SPACE_TYPE_UNSPECIFIED",
+                        "SPACE",
+                        "GROUP_CHAT",
+                        "DIRECT_MESSAGE"
+                    ],
+                    "enumDescriptions": [
+                        "Reserved.",
+                        "A place where people send messages, share files, and collaborate. A `SPACE` can include Chat apps.",
+                        "Group conversations between 3 or more people. A `GROUP_CHAT` can include Chat apps.",
+                        "1:1 messages between two humans or a human and a Chat app."
+                    ],
+                    "type": "string"
+                },
                 "threaded": {
                     "description": "Output only. Deprecated: Use `spaceThreadingState` instead. Whether messages are threaded in this space.",
                     "readOnly": true,
                     "type": "boolean"
                 },
                 "type": {
-                    "description": "Output only. Deprecated: Use `singleUserBotDm` or `spaceType` (developer preview) instead. The type of a space.",
+                    "description": "Output only. Deprecated: Use `space_type` instead. The type of a space.",
                     "enum": [
                         "TYPE_UNSPECIFIED",
                         "ROOM",
@@ -2555,7 +3365,7 @@
                     "enumDescriptions": [
                         "",
                         "Conversations between two or more humans.",
-                        "1:1 Direct Message between a human and a Chat app, where all messages are flat. Note that this does not include direct messages between two humans."
+                        "1:1 Direct Message between a human and a Chat app, where all messages are flat. Note that this doesn't include direct messages between two humans."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -2568,7 +3378,7 @@
             "id": "SpaceDetails",
             "properties": {
                 "description": {
-                    "description": "Optional. A description of the space. It could describe the space's discussion topic, functional purpose, or participants. Supports up to 150 characters.",
+                    "description": "Optional. A description of the space. For example, describe the space's discussion topic, functional purpose, or participants. Supports up to 150 characters.",
                     "type": "string"
                 },
                 "guidelines": {
@@ -2620,12 +3430,12 @@
             "type": "object"
         },
         "TextButton": {
-            "description": "A button with text and onclick action.",
+            "description": "A button with text and `onclick` action.",
             "id": "TextButton",
             "properties": {
                 "onClick": {
                     "$ref": "OnClick",
-                    "description": "The onclick action of the button."
+                    "description": "The `onclick` action of the button."
                 },
                 "text": {
                     "description": "The text of the button.",
@@ -2635,7 +3445,7 @@
             "type": "object"
         },
         "TextParagraph": {
-            "description": "A paragraph of text. Formatted text supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
+            "description": "A paragraph of text. Formatted text supported. For more information about formatting text, see [Formatting text in Google Chat apps](https://developers.google.com/chat/api/guides/message-formats/cards#card_text_formatting) and [Formatting text in Google Workspace Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).",
             "id": "TextParagraph",
             "properties": {
                 "text": {
@@ -2649,7 +3459,7 @@
             "id": "Thread",
             "properties": {
                 "name": {
-                    "description": "Resource name of the thread. Example: spaces/{space}/threads/{thread}",
+                    "description": "Resource name of the thread. Example: `spaces/{space}/threads/{thread}`",
                     "type": "string"
                 },
                 "threadKey": {
@@ -2692,6 +3502,26 @@
             },
             "type": "object"
         },
+        "UploadAttachmentRequest": {
+            "id": "UploadAttachmentRequest",
+            "properties": {
+                "filename": {
+                    "description": "Required. The filename of the attachment, including the file extension.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UploadAttachmentResponse": {
+            "id": "UploadAttachmentResponse",
+            "properties": {
+                "attachmentDataRef": {
+                    "$ref": "AttachmentDataRef",
+                    "description": "Reference to the uploaded attachment."
+                }
+            },
+            "type": "object"
+        },
         "User": {
             "description": "A user in Google Chat.",
             "id": "User",
@@ -2743,7 +3573,7 @@
                         "MENTION"
                     ],
                     "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
+                        "Default value for the enum. Don't use.",
                         "Add user to space.",
                         "Mention user in space."
                     ],
@@ -2757,7 +3587,7 @@
             "type": "object"
         },
         "WidgetMarkup": {
-            "description": "A widget is a UI element that presents texts, images, etc.",
+            "description": "A widget is a UI element that presents text and images.",
             "id": "WidgetMarkup",
             "properties": {
                 "buttons": {
@@ -2782,9 +3612,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Google Chat API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/chromemanagement__v1.json b/discovery/googleapis/chromemanagement__v1.json
index f8c30a4..8cb7f87 100644
--- a/discovery/googleapis/chromemanagement__v1.json
+++ b/discovery/googleapis/chromemanagement__v1.json
@@ -30,6 +30,13 @@
     "name": "chromemanagement",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230710",
+    "rootUrl": "https://chromemanagement.googleapis.com/",
+    "servicePath": "",
+    "title": "Chrome Management API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -107,7 +114,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "customers": {
             "resources": {
@@ -666,7 +672,7 @@
                                     ],
                                     "parameters": {
                                         "filter": {
-                                            "description": "Optional. Only include resources that match the filter. Supported filter fields: - device_id - user_id - device_org_unit_id - user_org_unit_id - timestamp - event_type The \"timestamp\" filter accepts either the Unix Epoch milliseconds format or the RFC3339 UTC \"Zulu\" format with nanosecond resolution and up to nine fractional digits. Both formats should be surrounded by simple double quotes. Examples: \"2014-10-02T15:01:23Z\", \"2014-10-02T15:01:23.045123456Z\", \"1679283943823\".",
+                                            "description": "Optional. Only include resources that match the filter. Although this parameter is currently optional, this parameter will be required- please specify at least 1 event type. Supported filter fields: - device_id - user_id - device_org_unit_id - user_org_unit_id - timestamp - event_type The \"timestamp\" filter accepts either the Unix Epoch milliseconds format or the RFC3339 UTC \"Zulu\" format with nanosecond resolution and up to nine fractional digits. Both formats should be surrounded by simple double quotes. Examples: \"2014-10-02T15:01:23Z\", \"2014-10-02T15:01:23.045123456Z\", \"1679283943823\".",
                                             "location": "query",
                                             "type": "string"
                                         },
@@ -689,7 +695,7 @@
                                             "type": "string"
                                         },
                                         "readMask": {
-                                            "description": "Required. Read mask to specify which fields to return.",
+                                            "description": "Required. Read mask to specify which fields to return. Although currently required, this field will become optional, while the filter parameter with an event type will be come required.",
                                             "format": "google-fieldmask",
                                             "location": "query",
                                             "type": "string"
@@ -792,8 +798,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://chromemanagement.googleapis.com/",
     "schemas": {
         "GoogleChromeManagementV1AndroidAppInfo": {
             "description": "Android app information.",
@@ -2029,6 +2033,34 @@
             },
             "type": "object"
         },
+        "GoogleChromeManagementV1HeartbeatStatusReport": {
+            "description": "Heartbeat status report of a device. * Available for Kiosks * This field provides online/offline/unknown status of a device and will only be included if the status has changed (e.g. Online -> Offline) * Data for this field is controlled via policy: [HeartbeatEnabled](https://chromeenterprise.google/policies/#HeartbeatEnabled) [More Info](https://support.google.com/chrome/a/answer/6179663#:~:text=On%20the%20Chrome,device%20status%20alerts) * Heartbeat Frequency: 2 mins * Note: If a device goes offline, it can take up to 12 minutes for the online status of the device to be updated * Cache: If the device is offline, the collected data is stored locally, and will be reported when the device is next online: N/A * Reported for affiliated users only: N/A * Granular permission needed: TELEMETRY_API_DEVICE_ACTIVITY_REPORT",
+            "id": "GoogleChromeManagementV1HeartbeatStatusReport",
+            "properties": {
+                "reportTime": {
+                    "description": "Timestamp of when status changed was detected",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "State the device changed to",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "UNKNOWN",
+                        "ONLINE",
+                        "OFFLINE"
+                    ],
+                    "enumDescriptions": [
+                        "State not specified",
+                        "Device is not eligible for heartbeat monitoring",
+                        "Device is online",
+                        "Device is offline"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleChromeManagementV1HttpsLatencyRoutineData": {
             "description": "Data that describes the result of the HTTPS latency diagnostics routine, with the HTTPS requests issued to Google websites.",
             "id": "GoogleChromeManagementV1HttpsLatencyRoutineData",
@@ -2172,6 +2204,26 @@
             },
             "type": "object"
         },
+        "GoogleChromeManagementV1KioskAppStatusReport": {
+            "description": "Kiosk app status report of a device. * Available for Kiosks * This field provides the app id and version number running on a kiosk device and the timestamp of when the report was last updated * Data for this field is controlled via policy: [ReportDeviceSessionStatus](https://chromeenterprise.google/policies/#ReportDeviceSessionStatus) * Data Collection Frequency: Only at Upload * Default Data Reporting Frequency: 3 hours - Policy Controlled: Yes * Cache: If the device is offline, the collected data is stored locally, and will be reported when the device is next online: No * Reported for affiliated users only: N/A * Granular permission needed: TELEMETRY_API_APPS_REPORT",
+            "id": "GoogleChromeManagementV1KioskAppStatusReport",
+            "properties": {
+                "appId": {
+                    "description": "App id of kiosk app for example \"mdmkkicfmmkgmpkmkdikhlbggogpicma\"",
+                    "type": "string"
+                },
+                "appVersion": {
+                    "description": "App version number of kiosk app for example \"1.10.118\"",
+                    "type": "string"
+                },
+                "reportTime": {
+                    "description": "Timestamp of when report was collected",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleChromeManagementV1ListTelemetryDevicesResponse": {
             "id": "GoogleChromeManagementV1ListTelemetryDevicesResponse",
             "properties": {
@@ -2697,6 +2749,22 @@
                     "readOnly": true,
                     "type": "array"
                 },
+                "heartbeatStatusReport": {
+                    "description": "Output only. Heartbeat status report containing timestamps periodically sorted in decreasing order of report_time",
+                    "items": {
+                        "$ref": "GoogleChromeManagementV1HeartbeatStatusReport"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "kioskAppStatusReport": {
+                    "description": "Output only. Kiosk app status report for the kiosk device",
+                    "items": {
+                        "$ref": "GoogleChromeManagementV1KioskAppStatusReport"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
                 "memoryInfo": {
                     "$ref": "GoogleChromeManagementV1MemoryInfo",
                     "description": "Output only. Information regarding memory specs for the device.",
@@ -3206,9 +3274,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Chrome Management API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/chromepolicy__v1.json b/discovery/googleapis/chromepolicy__v1.json
index f7466a5..732252c 100644
--- a/discovery/googleapis/chromepolicy__v1.json
+++ b/discovery/googleapis/chromepolicy__v1.json
@@ -27,6 +27,13 @@
     "name": "chromepolicy",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://chromepolicy.googleapis.com/",
+    "servicePath": "",
+    "title": "Chrome Policy API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "customers": {
             "resources": {
@@ -555,8 +561,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://chromepolicy.googleapis.com/",
     "schemas": {
         "ChromeCrosDpanelAutosettingsProtoPolicyApiLifecycle": {
             "id": "ChromeCrosDpanelAutosettingsProtoPolicyApiLifecycle",
@@ -1713,9 +1717,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Chrome Policy API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/chromeuxreport__v1.json b/discovery/googleapis/chromeuxreport__v1.json
index 892ca60..4f9f49e 100644
--- a/discovery/googleapis/chromeuxreport__v1.json
+++ b/discovery/googleapis/chromeuxreport__v1.json
@@ -15,6 +15,13 @@
     "name": "chromeuxreport",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://chromeuxreport.googleapis.com/",
+    "servicePath": "",
+    "title": "Chrome UX Report API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "records": {
             "methods": {
@@ -129,8 +135,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://chromeuxreport.googleapis.com/",
     "schemas": {
         "Bin": {
             "description": "A bin is a discrete portion of data spanning from start to end, or if no end is given, then from start to +inf. A bin's start and end values are given in the value type of the metric it represents. For example, \"first contentful paint\" is measured in milliseconds and exposed as ints, therefore its metric bins will use int32s for its start and end types. However, \"cumulative layout shift\" is measured in unitless decimals and is exposed as a decimal encoded as a string, therefore its metric bins will use strings for its value type.",
@@ -511,9 +515,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Chrome UX Report API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/civicinfo__v2.json b/discovery/googleapis/civicinfo__v2.json
index 305e934..b03f3dd 100644
--- a/discovery/googleapis/civicinfo__v2.json
+++ b/discovery/googleapis/civicinfo__v2.json
@@ -15,6 +15,13 @@
     "name": "civicinfo",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://civicinfo.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Civic Information API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "divisions": {
             "methods": {
@@ -124,7 +130,14 @@
                     "httpMethod": "GET",
                     "id": "civicinfo.elections.electionQuery",
                     "parameterOrder": [],
-                    "parameters": {},
+                    "parameters": {
+                        "productionDataOnly": {
+                            "default": "true",
+                            "description": "Whether to include data that has not been allowlisted yet",
+                            "location": "query",
+                            "type": "boolean"
+                        }
+                    },
                     "path": "civicinfo/v2/elections",
                     "response": {
                         "$ref": "ElectionsQueryResponse"
@@ -158,6 +171,12 @@
                             "location": "query",
                             "type": "boolean"
                         },
+                        "productionDataOnly": {
+                            "default": "true",
+                            "description": "Whether to include data that has not been vetted yet. Should only be made available to internal IPs or trusted partners. This is a non-discoverable parameter in the One Platform API config.",
+                            "location": "query",
+                            "type": "boolean"
+                        },
                         "returnAllAvailableData": {
                             "default": "false",
                             "description": "If set to true, the query will return the success code and include any partial information when it is unable to determine a matching address or unable to determine the election for electionId=0 queries.",
@@ -351,8 +370,6 @@
             }
         }
     },
-    "revision": "20230509",
-    "rootUrl": "https://civicinfo.googleapis.com/",
     "schemas": {
         "AdministrationRegion": {
             "description": "Describes information about a regional election administrative area.",
@@ -859,799 +876,6 @@
             },
             "type": "object"
         },
-        "FeatureIdProto": {
-            "description": "A globally unique identifier associated with each feature. We use 128-bit identifiers so that we have lots of bits available to distinguish between features. The feature id currently consists of a 64-bit \"cell id\" that **sometimes** corresponds to the approximate centroid of the feature, plus a 64-bit fingerprint of other identifying information. See more on each respective field in its comments. Feature ids are first assigned when the data is created in MapFacts. After initial creation of the feature, they are immutable. This means that the only properties that you should rely on are that they are unique, and that cell_ids often - but not always - preserve spatial locality. The degree of locality varies as the feature undergoes geometry changes, and should not in general be considered a firm guarantee of the location of any particular feature. In fact, some locationless features have randomized cell IDs! Consumers of FeatureProtos from Mapfacts are guaranteed that fprints in the id field of features will be globally unique. Using the fprint allows consumers who don't need the spatial benefit of cell ids to uniquely identify features in a 64-bit address space. This property is not guaranteed for other sources of FeatureProtos.",
-            "id": "FeatureIdProto",
-            "properties": {
-                "cellId": {
-                    "description": "The S2CellId corresponding to the approximate location of this feature as of when it was first created. This can be of variable accuracy, ranging from the exact centroid of the feature at creation, a very large S2 Cell, or even being completely randomized for locationless features. Cell ids have the nice property that they follow a space-filling curve over the surface of the earth. (See s2cellid.h for details.) WARNING: Clients should only use cell IDs to perform spatial locality optimizations. There is no strict guarantee that the cell ID of a feature is related to the current geometry of the feature in any way.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "fprint": {
-                    "description": "A 64-bit fingerprint used to identify features. Most clients should rely on MapFacts or OneRing to choose fingerprints. If creating new fprints, the strategy should be chosen so that the chance of collision is remote or non-existent, and the distribution should be reasonably uniform. For example, if the source data assigns unique ids to features, then a fingerprint of the provider name, version, and source id is sufficient.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "temporaryData": {
-                    "$ref": "MessageSet",
-                    "description": "A place for clients to attach arbitrary data to a feature ID. Never set in MapFacts."
-                }
-            },
-            "type": "object"
-        },
-        "GeocodingSummary": {
-            "description": "Detailed summary of the result from geocoding an address",
-            "id": "GeocodingSummary",
-            "properties": {
-                "addressUnderstood": {
-                    "description": "Represents the best estimate of whether or not the input address was fully understood and the address is correctly componentized. Mirrors the same-name field in geostore.staging.AddressLinkupScoringProto.",
-                    "type": "boolean"
-                },
-                "featureId": {
-                    "$ref": "FeatureIdProto",
-                    "description": "The ID of the FeatureProto returned by the geocoder"
-                },
-                "featureType": {
-                    "description": "The feature type for the FeatureProto returned by the geocoder",
-                    "enum": [
-                        "typeAny",
-                        "typeTransportation",
-                        "typeRoute",
-                        "typeDeprecatedHighwayDoNotUse",
-                        "typeHighway",
-                        "typeHighway1",
-                        "typeHighway2",
-                        "typeHighway3",
-                        "typeHighway4",
-                        "typeHighway5",
-                        "typeHighway6",
-                        "typeHighway7",
-                        "typeHighway8",
-                        "typeHighway9",
-                        "typeBicycleRoute",
-                        "typeTrail",
-                        "typeSegment",
-                        "typeRoad",
-                        "typeRailway",
-                        "typeStandardTrack",
-                        "typeJrTrack",
-                        "typeNarrowTrack",
-                        "typeMonorailTrack",
-                        "typeSubwayTrack",
-                        "typeLightRailTrack",
-                        "typeBroadTrack",
-                        "typeHighSpeedRail",
-                        "typeTrolleyTrack",
-                        "typeFerry",
-                        "typeFerryBoat",
-                        "typeFerryTrain",
-                        "typeVirtualSegment",
-                        "typeIntersection",
-                        "typeTransit",
-                        "typeTransitStation",
-                        "typeBusStation",
-                        "typeTramwayStation",
-                        "typeTrainStation",
-                        "typeSubwayStation",
-                        "typeFerryTerminal",
-                        "typeAirport",
-                        "typeAirportCivil",
-                        "typeAirportMilitary",
-                        "typeAirportMixed",
-                        "typeHeliport",
-                        "typeSeaplaneBase",
-                        "typeAirstrip",
-                        "typeCableCarStation",
-                        "typeGondolaLiftStation",
-                        "typeFunicularStation",
-                        "typeSpecialStation",
-                        "typeHorseCarriageStation",
-                        "typeMonorailStation",
-                        "typeSeaport",
-                        "typeTransitStop",
-                        "typeTransitTrip",
-                        "typeTransitDeparture",
-                        "typeTransitLeg",
-                        "typeTransitLine",
-                        "typeTransitAgencyDeprecatedValue",
-                        "typeTransitTransfer",
-                        "typeSegmentPath",
-                        "typeRoadSign",
-                        "typeIntersectionGroup",
-                        "typePathway",
-                        "typeRestrictionGroup",
-                        "typeTollCluster",
-                        "typePolitical",
-                        "typeCountry",
-                        "typeAdministrativeArea",
-                        "typeAdministrativeArea1",
-                        "typeUsState",
-                        "typeGbCountry",
-                        "typeJpTodoufuken",
-                        "typeAdministrativeArea2",
-                        "typeGbFormerPostalCounty",
-                        "typeGbTraditionalCounty",
-                        "typeAdministrativeArea3",
-                        "typeAdministrativeArea4",
-                        "typeAdministrativeArea5",
-                        "typeAdministrativeArea6",
-                        "typeAdministrativeArea7",
-                        "typeAdministrativeArea8",
-                        "typeAdministrativeArea9",
-                        "typeColloquialArea",
-                        "typeReservation",
-                        "typeLocality",
-                        "typeGbPostTown",
-                        "typeJpGun",
-                        "typeJpShikuchouson",
-                        "typeJpSubShikuchouson",
-                        "typeColloquialCity",
-                        "typeSublocality",
-                        "typeUsBorough",
-                        "typeGbDependentLocality",
-                        "typeJpOoaza",
-                        "typeJpKoaza",
-                        "typeJpGaiku",
-                        "typeGbDoubleDependentLocality",
-                        "typeJpChiban",
-                        "typeJpEdaban",
-                        "typeSublocality1",
-                        "typeSublocality2",
-                        "typeSublocality3",
-                        "typeSublocality4",
-                        "typeSublocality5",
-                        "typeNeighborhood",
-                        "typeConstituency",
-                        "typeDesignatedMarketArea",
-                        "typeSchoolDistrict",
-                        "typeLandParcel",
-                        "typeDisputedArea",
-                        "typePoliceJurisdiction",
-                        "typeStatisticalArea",
-                        "typeConstituencyFuture",
-                        "typePark",
-                        "typeGolfCourse",
-                        "typeLocalPark",
-                        "typeNationalPark",
-                        "typeUsNationalPark",
-                        "typeUsNationalMonument",
-                        "typeNationalForest",
-                        "typeProvincialPark",
-                        "typeProvincialForest",
-                        "typeCampgrounds",
-                        "typeHikingArea",
-                        "typeBusiness",
-                        "typeGovernment",
-                        "typeBorderCrossing",
-                        "typeCityHall",
-                        "typeCourthouse",
-                        "typeEmbassy",
-                        "typeLibrary",
-                        "typeSchool",
-                        "typeUniversity",
-                        "typeEmergency",
-                        "typeHospital",
-                        "typePharmacy",
-                        "typePolice",
-                        "typeFire",
-                        "typeDoctor",
-                        "typeDentist",
-                        "typeVeterinarian",
-                        "typeTravelService",
-                        "typeLodging",
-                        "typeRestaurant",
-                        "typeGasStation",
-                        "typeParking",
-                        "typePostOffice",
-                        "typeRestArea",
-                        "typeCashMachine",
-                        "typeCarRental",
-                        "typeCarRepair",
-                        "typeShopping",
-                        "typeGrocery",
-                        "typeTouristDestination",
-                        "typeEcoTouristDestination",
-                        "typeBirdWatching",
-                        "typeFishing",
-                        "typeHunting",
-                        "typeNatureReserve",
-                        "typeTemple",
-                        "typeChurch",
-                        "typeGurudwara",
-                        "typeHinduTemple",
-                        "typeMosque",
-                        "typeSynagogue",
-                        "typeStadium",
-                        "typeBar",
-                        "typeMovieRental",
-                        "typeCoffee",
-                        "typeGolf",
-                        "typeBank",
-                        "typeDoodle",
-                        "typeGrounds",
-                        "typeAirportGrounds",
-                        "typeBuildingGrounds",
-                        "typeCemetery",
-                        "typeHospitalGrounds",
-                        "typeIndustrial",
-                        "typeMilitary",
-                        "typeShoppingCenter",
-                        "typeSportsComplex",
-                        "typeUniversityGrounds",
-                        "typeDeprecatedTarmac",
-                        "typeEnclosedTrafficArea",
-                        "typeParkingLot",
-                        "typeParkingGarage",
-                        "typeOffRoadArea",
-                        "typeBorder",
-                        "typeBuilding",
-                        "typeGeocodedAddress",
-                        "typeNaturalFeature",
-                        "typeTerrain",
-                        "typeSand",
-                        "typeBeach",
-                        "typeDune",
-                        "typeRocky",
-                        "typeIce",
-                        "typeGlacier",
-                        "typeBuiltUpArea",
-                        "typeVegetation",
-                        "typeShrubbery",
-                        "typeWoods",
-                        "typeAgricultural",
-                        "typeGrassland",
-                        "typeTundra",
-                        "typeDesert",
-                        "typeSaltFlat",
-                        "typeWater",
-                        "typeOcean",
-                        "typeBay",
-                        "typeBight",
-                        "typeLagoon",
-                        "typeSea",
-                        "typeStrait",
-                        "typeInlet",
-                        "typeFjord",
-                        "typeLake",
-                        "typeSeasonalLake",
-                        "typeReservoir",
-                        "typePond",
-                        "typeRiver",
-                        "typeRapids",
-                        "typeDistributary",
-                        "typeConfluence",
-                        "typeWaterfall",
-                        "typeSpring",
-                        "typeGeyser",
-                        "typeHotSpring",
-                        "typeSeasonalRiver",
-                        "typeWadi",
-                        "typeEstuary",
-                        "typeWetland",
-                        "typeWaterNavigation",
-                        "typeFord",
-                        "typeCanal",
-                        "typeHarbor",
-                        "typeChannel",
-                        "typeReef",
-                        "typeReefFlat",
-                        "typeReefGrowth",
-                        "typeReefExtent",
-                        "typeReefRockSubmerged",
-                        "typeIrrigation",
-                        "typeDam",
-                        "typeDrinkingWater",
-                        "typeCurrent",
-                        "typeWateringHole",
-                        "typeTectonic",
-                        "typeWateringHoleDeprecated",
-                        "typeVolcano",
-                        "typeLavaField",
-                        "typeFissure",
-                        "typeFault",
-                        "typeLandMass",
-                        "typeContinent",
-                        "typeIsland",
-                        "typeAtoll",
-                        "typeOceanRockExposed",
-                        "typeCay",
-                        "typePeninsula",
-                        "typeIsthmus",
-                        "typeElevated",
-                        "typePeak",
-                        "typeNunatak",
-                        "typeSpur",
-                        "typePass",
-                        "typePlateau",
-                        "typeRidge",
-                        "typeRavine",
-                        "typeCrater",
-                        "typeKarst",
-                        "typeCliff",
-                        "typeVista",
-                        "typeDigitalElevationModel",
-                        "typeUpland",
-                        "typeTerrace",
-                        "typeSlope",
-                        "typeContourLine",
-                        "typePan",
-                        "typeUnstableHillside",
-                        "typeMountainRange",
-                        "typeUndersea",
-                        "typeSubmarineSeamount",
-                        "typeSubmarineRidge",
-                        "typeSubmarineGap",
-                        "typeSubmarinePlateau",
-                        "typeSubmarineDeep",
-                        "typeSubmarineValley",
-                        "typeSubmarineBasin",
-                        "typeSubmarineSlope",
-                        "typeSubmarineCliff",
-                        "typeSubmarinePlain",
-                        "typeSubmarineFractureZone",
-                        "typeCave",
-                        "typeRock",
-                        "typeArchipelago",
-                        "typePostal",
-                        "typePostalCode",
-                        "typePostalCodePrefix",
-                        "typePremise",
-                        "typeSubPremise",
-                        "typeSuite",
-                        "typePostTown",
-                        "typePostalRound",
-                        "typeMetaFeature",
-                        "typeDataSource",
-                        "typeLocale",
-                        "typeTimezone",
-                        "typeBusinessChain",
-                        "typePhoneNumberPrefix",
-                        "typePhoneNumberAreaCode",
-                        "typeBusinessCorridor",
-                        "typeAddressTemplate",
-                        "typeTransitAgency",
-                        "typeFutureGeometry",
-                        "typeEvent",
-                        "typeEarthquake",
-                        "typeHurricane",
-                        "typeWeatherCondition",
-                        "typeTransient",
-                        "typeEntrance",
-                        "typeCartographic",
-                        "typeHighTension",
-                        "typeSkiTrail",
-                        "typeSkiLift",
-                        "typeSkiBoundary",
-                        "typeWatershedBoundary",
-                        "typeTarmac",
-                        "typeWall",
-                        "typePicnicArea",
-                        "typePlayGround",
-                        "typeTrailHead",
-                        "typeGolfTeeingGround",
-                        "typeGolfPuttingGreen",
-                        "typeGolfRough",
-                        "typeGolfSandBunker",
-                        "typeGolfFairway",
-                        "typeGolfHole",
-                        "typeDeprecatedGolfShop",
-                        "typeCampingSite",
-                        "typeDesignatedBarbecuePit",
-                        "typeDesignatedCookingArea",
-                        "typeCampfirePit",
-                        "typeWaterFountain",
-                        "typeLitterReceptacle",
-                        "typeLockerArea",
-                        "typeAnimalEnclosure",
-                        "typeCartographicLine",
-                        "typeEstablishment",
-                        "typeEstablishmentGrounds",
-                        "typeEstablishmentBuilding",
-                        "typeEstablishmentPoi",
-                        "typeEstablishmentService",
-                        "typeCelestial",
-                        "typeRoadMonitor",
-                        "typePublicSpacesAndMonuments",
-                        "typeStatue",
-                        "typeTownSquare",
-                        "typeLevel",
-                        "typeCompound",
-                        "typeCompoundGrounds",
-                        "typeCompoundBuilding",
-                        "typeCompoundSection",
-                        "typeTerminalPoint",
-                        "typeRegulatedArea",
-                        "typeLogicalBorder",
-                        "typeDoNotUseReservedToCatchGeneratedFiles",
-                        "typeUnknown"
-                    ],
-                    "enumDescriptions": [
-                        "ABSTRACT",
-                        "ABSTRACT",
-                        "A route is any section of road (or rails, etc.) that has a name. This includes city streets as well as highways. Road segments can belong to multiple routes (e.g. El Camino, CA-82).",
-                        "DEPRECATED",
-                        "ABSTRACT",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "A designated bicycle route, whose segments may consist of any combination of bicycle paths, bicycle lanes, or city streets.",
-                        "A designated trail, which may consist of paved walkways, dirt paths, fire road, streets or highways, etc.",
-                        "ABSTRACT",
-                        "",
-                        "Railroads use several different incompatible track types.",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Tracks for streetcars, cable-cars, etc. Ferries are services that are part of the road network but are not roads. They typically involve fares and scheduled departure times.",
-                        "ABSTRACT",
-                        "The vast majority of ferries are ferry boats.",
-                        "Also called a \"car transport\", a ferry train is a rail service that carries passengers and their vehicles across undrivable terrain. The Channel Tunnel (\"Chunnel\") is the most famous example, but they are also common in the Alps where they connect neighboring valleys otherwise separated by impassable mountains.",
-                        "Any plausible 1-dimensional path through a 2+ dimensional space, for the purposes of making graph-search-based routing possible. Such segments can be used to model paths through parking lots, squares, floors of buildings and other areas.",
-                        "An intersection consists of a collection of segments that terminate at the same location. This is topological definition: it may not match what a typical user would think of as an \"intersection\". See TYPE_INTERSECTION_GROUP, below, for more information. Each segment terminating at an intersection has an \"endpoint type\" that specifies how that segment is terminated: stop sign, yield sign, three-way light, etc.",
-                        "ABSTRACT",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "A transit line is a collection of transit legs, associated with some invariant properties of the trips that run over the legs. See also transitline.proto",
-                        "TYPE_TRANSIT_AGENCY was moved to 0xC91. This deprecated enum value still exists for debugging purposes only.",
-                        "DEPRECATED",
-                        "ABSTRACT",
-                        "Road sign features have names, point geometry, etc. They also have segment_path data (see below) which lists the segments that refer to the sign. See segment.proto for the reference from the segment to the road sign.",
-                        "Our TYPE_INTERSECTION feature, above, models the point where one or more segments terminate. This is topological definition: it may not match what a typical user would think of as an \"intersection\". Consider the intersections where Hayes, Market, Larkin, and 9th Street meet near (37.77765, -122.41638) in San Francisco. Most people would probably consider this a single feature, even though we model it as four separate TYPE_INTERSECTION features. This TYPE_INTERSECTION_GROUP is used to model the user's concept of a complex intersection.",
-                        "RESERVED",
-                        "A restriction group describes a set of segment restrictions that belong together and have a name or an associated event. See also restriction_group.proto",
-                        "A toll cluster is either a single point on a segment (represented as a point at the end of the segment that has ENDPOINT_TOLL_BOOTH set) or a group of points on various road segments in MapFacts that represents one or more lanes passing through a toll fixture that all go to the same routing destination. Each toll cluster should have at most a single price per payment method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has different prices for multiple routing destinations, drivers need to be in the correct lane before passing through the toll fixture and hence such a fixture is represented by multiple toll clusters. A toll cluster does not necessarily represent a real-world entity, e.g. a particular plaza/structure as perceived by humans. This is because a plaza can be represented by more than one toll cluster. We require toll clusters to have names, but they might be non-unique. For example, a plaza might be represented by multiple toll clusters that may have the same plaza name. For further details, please see go/toll-cluster-schema.",
-                        "ABSTRACT",
-                        "",
-                        "ABSTRACT",
-                        "",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "e.g. Silicon Valley",
-                        "A reservation is a region collectively held or governed by indigenous people and officially recognized by the country’s government at the federal or state level. A reservation may be fully contained within an administrative feature or partially contained within two or more. These regions are referred to by different categorical names depending on country and even by state, including but not limited to: “Indian Reservations”, “Indian Reserves”, “Land Claim Settlement Lands”, “Indian Lands”, “Treaty Lands”, “Indigenous Territories”, etc. A reservation is not a historic indigenous territory boundary or a region which has applied for land rights but has not yet received official recognition.",
-                        "",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "An entity widely considered to be a city, that may itself be made up of smaller political entities, some of which are cities/towns/villages themselves. For example, the colloquial view of Sydney, Australia actually comprises many smaller cities, but is regarded as a city itself. This type is not suitable for modeling official metro-/micropolitan or other statistical areas.",
-                        "ABSTRACT",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Designated Market Areas (or DMAs) are used by marketing and ratings companies (such as the Nielsen Media Research company) to describe geographical regions (such as the greater New York metropolitan area) that are covered by a set of television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In the United States, DMAs should have a DMA numeric ID name, tagged with the FLAG_DESIGNATED_MARKET_AREA_ID flag.",
-                        "",
-                        "",
-                        "Eventually we'll have more data for disputed areas (e.g., who makes claims on the area, who has de facto control, etc.). For the moment, we just define a type so we can simply mark areas as disputed.",
-                        "Boundaries representing the jurisdiction of a particular police station.",
-                        "An area used for aggregating statistical data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a third nibble so we can add an abstract parent above it later if need be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as TYPE_STATISTICAL_AREA1).",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "A line representing the boundary between two features. See border.proto for details.",
-                        "DEPRECATED",
-                        "An association of a point with an address, with no other information.",
-                        "ABSTRACT",
-                        "Expanses of land that share common surface attributes. These areas would look more or less uniform from a high altitude.",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Terrain that looks populated.",
-                        "Terrain that is covered in vegetation.",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "A flat expanse of salt left by the evaporation of a body of salt water.",
-                        "Features can be TYPE_WATER if we don't have enough information to properly type the body of water. TYPE_WATER is also used as the type for child features that compose a TYPE_RIVER feature.",
-                        "One of the large salt-water bodies that covers most of the globe.",
-                        "An ocean subdivision formed by a coastal indentation. Includes coves and gulfs.",
-                        "An open body of water formed by a slight coastal indentation.",
-                        "",
-                        "An ocean subdivision more or less confined by land and islands.",
-                        "A long narrow ocean subdivision. Includes sounds.",
-                        "",
-                        "",
-                        "An inland body of standing water.",
-                        "A lake that dries up part of the year.",
-                        "An artificial body of water, possibly created by a dam, often used for irrigation or house use.",
-                        "",
-                        "An inland body of moving water, or parts associated with it in which there is little or no current (backwater).",
-                        "",
-                        "A branch which flows away from the main river. Includes deltas.",
-                        "A place where two or more rivers join.",
-                        "",
-                        "A place where ground water flows naturally out of the ground.",
-                        "",
-                        "",
-                        "A river that dries up part of the year.",
-                        "A dry riverbed that occasionally receives flashfloods.",
-                        "A place at the end of a river where fresh and salt water mix. Includes tidal creeks and limans.",
-                        "Land that is usually flooded. Includes bogs, marshes, flats, moors, and swamps.",
-                        "",
-                        "A shallow place where water may be waded through.",
-                        "A narrow passage used by boats. Normally artificial.",
-                        "A deep place near a shore where ships commonly drop anchor.",
-                        "A deep part in a body of water that is suitable for navigation. Includes narrows.",
-                        "Rocks, coral, sandbars, or other features beneath the surface of the water that pose a hazard to passing ships. Includes shoals.",
-                        "A relatively shallow zone of the back reef located closest to the shore, that may be exposed at low tide.",
-                        "A small section of rocks, coral, sandbars, or other features beneath the surface of the water that forms part of a reef.",
-                        "The full extent of the reef complex.",
-                        "A submerged rock in the water.",
-                        "Man-made (and sometimes natural) channels used to move water. This type was used for both dam structures and water that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for dam structures and TYPE_RESERVOIR for water.",
-                        "DEPRECATED",
-                        "",
-                        "Includes overfalls.",
-                        "A natural depression filled with water where animals come to drink.",
-                        "ABSTRACT This type is incorrectly under TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now fixed. See TYPE_WATERING_HOLE for the replacement.",
-                        "DEPRECATED",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "An exposed rock in the water.",
-                        "A small, low-elevation, sandy island formed on the surface of coral reefs",
-                        "A stretch of land projecting into water. Includes capes and spits.",
-                        "A strip of land connecting two larger land masses, such as continents.",
-                        "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.",
-                        "Elevations that have a distinctive peak.",
-                        "A peak or ridge of a mountain that extends through a glacier.",
-                        "A subsidiary peak of a mountain.",
-                        "A route over an otherwise difficult to traverse feature. Includes saddle.",
-                        "Elevations that are flat on top. Includes mesas and buttes.",
-                        "A ridge is a geographical feature consisting of a chain of mountains or hills that form a continuous elevated crest with a single ridgeline for some distance.",
-                        "Steep declines usually carved by erosion. Includes valleys, canyons, ditches, and gorges.",
-                        "Depressions causes by impact, explosion, and sometimes sink-holes.",
-                        "Topography formed on limestone and gypsum by dissolution with sinkholes, caves, etc.",
-                        "A vertical or nearly vertical slope. Includes escarpments.",
-                        "An elevated place that is notable for having a good view. Raster digital elevation data. This is not a type to be used by providers or consumed by clients.",
-                        "RESERVED",
-                        "Land along streams higher than the alluvial plain or stream terrace.",
-                        "",
-                        "Land not so steep as a cliff, but changing elevation. Includes slides.",
-                        "All the points on the polygon are at the same elevation.",
-                        "A near-level shallow, natural depression or basin, usually containing an intermittent lake, pond, or pool.",
-                        "",
-                        "A series of mountains or hills ranged in a line and connected by high ground. Mountain ranges usually consist of many smaller ridges. For example, the Himalayas, the Andes. the Alps, etc.",
-                        "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.",
-                        "includes peaks, ranges, and spurs",
-                        "",
-                        "includes saddles",
-                        "",
-                        "",
-                        "includes trenches and troughs",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Don't use 0xA7. Use 8 bits for additional types under TYPE_NATURAL_FEATURE, so we don't run out of space. The following are miscellaneous natural features that don't fit any of the categories above.",
-                        "",
-                        "A feature representing a group or chain of islands. ",
-                        "ABSTRACT",
-                        "This is the type for postal codes which are complete and independent enough that there should be a feature for them (e.g. US 5-digit ZIP codes). For even more detailed suffixes that further subdivide a postal code (such as the +4 component in US ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX address component. When a range or set of postal codes share the same geographical area, e.g. because a precise subdivision does not exist or this subdivision is unknown, this type is used for each individual postal code.",
-                        "A prefix portion of a postal code which does not meet the requirements for TYPE_POSTAL_CODE, but which is useful to search for, for example UK outcodes.",
-                        "DEPRECATED",
-                        "DEPRECATED This is deprecated and we want to use TYPE_COMPOUND_SECTION instead.",
-                        "DEPRECATED",
-                        "The term \"post town\" is used for a locality-like-entity that is only used for postal addresses.",
-                        "DEPRECATED",
-                        "ABSTRACT",
-                        "Every data source used in constructing a data repository has a corresponding feature that provides more information about that data source. The extra information is stored in the optional data_source field below.",
-                        "A locale feature provides region specific conventions such as preferred language and formatting details for time, date, and currency values. Locales aren't necessary defined by physical geographic features, so they are classified as meta-features.",
-                        "A timezone feature is used to specify the region covering an international timezone. When a point is covered by multiple timezone features, the most specific one can be used to compute the local time at this point. Most specific implies a much smaller region or the one that is closer to the center. A feature's timezone can be specified in the repeated related_timezone field.",
-                        "A business chain feature is used to represent a chain, e.g. Starbucks, McDonald's, etc. Other features representing specific stores/franchises of this chain may refer to one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly reserved to commercial chains but can also be used to model organizations such as the Red Cross or the United Nations.",
-                        "A phone number prefix feature is used to specify the region where phone numbers (typically fixed-line numbers) must begin with a certain prefix. Any phone number prefix down to any level of granularity could be represented by this type.",
-                        "A phone number area code is a prefix which also coincides with the area code, or national destination code, of a particular region.",
-                        "A Business Corridor is a dense cluster of semantically similar establishments. TYPE_BUSINESS_CORRIDOR features are distinguished from TYPE_COLLOQUIAL_AREA features because the corridors are not under the political hierarchy, are allowed to be nameless, and may not correspond to well-known real world locations. For more details, see go/geo-corridors-schema.",
-                        "An address template feature provides region-specific conventions for structuring addresses. These features aren't necessarily defined by physical geographic features, so they are classified as meta-features.",
-                        "A transit agency operates a number of lines, typically all in the same city, region or country. See also transitagency.proto",
-                        "A feature whose geometry is planned to replace the geometry on another feature.",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "RESERVED",
-                        "A portal of entry or exit to another feature. Examples: - Subway station entrance. - Parking lot entrance.",
-                        "Cartographic features are used to capture real-world objects for which there is no current desire to model any specific attributes. These are only useful to make the map tiles look pretty.",
-                        "DEPRECATED",
-                        "Also see skitrail.proto",
-                        "Also see skilift.proto",
-                        "Also see skiboundary.proto",
-                        "",
-                        "Starting with TYPE_TARMAC, we use longer IDs, so that we can expand the number of feature types under TYPE_CARTOGRAPHIC.",
-                        "Use TYPE_COMPOUND_GROUND and appropriate gcids for the next two.",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "",
-                        "Sub-types within a golf course.",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop for golf shops instead.",
-                        "DEPRECATED",
-                        "DEPRECATED",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Subtype within a zoo - a cage or fenced-off or otherwise delineated area containing animals.",
-                        "A line for a cartographic detail. For example the international date line. Such features should have polyline geometry.",
-                        "ABSTRACT This type is being replaced by TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2",
-                        "DEPRECATED This type has been replaced by TYPE_COMPOUND_BUILDING. For further details, see go/oyster-compounds",
-                        "DEPRECATED",
-                        "An establishment which has a address (a.k.a. location or storefront). Note that it *may* also have a service area (e.g. a restaurant that offers both dine-in and delivery). This type of business is also known as a \"hybrid\" Service Area Business. Establishment POIs can be referenced by TYPE_COMPOUND features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the reciprocal relation of the RELATION_OCCUPIES.",
-                        "A business without a storefront, e.g. a plumber. It would normally not have a place that a customer could visit to receive service, but it would have an area served by the business. Also known as a \"pure\" Service Area Business. NOTE(tcain): Using value 0xD441, since we could find ourselves with a need to differentiate service areas from online-only at this level in the future, but still benefit from being able to group those under a common parent, disjoint from TYPE_ESTABLISHMENT_POI.",
-                        "The root of types of features that are in the sky, rather than on the earth. There will eventually be a hierarchy of types here.",
-                        "Features responsible for monitoring traffic on roads (usually for speed). Includes cameras at particular points as well as monitors that cover larger spans. Features of this type should have a corresponding gcid that specifies the correct subtype (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was originally named as TYPE_ROAD_CAMERA.",
-                        "ABSTRACT",
-                        "Note that this type does not distinguish the nature of the statue (religious, historical, memorial, tourist, ...).",
-                        "Open space used for events, gathering, or as market-place.",
-                        "A feature used to represent a logical level, e.g. floor.",
-                        "ABSTRACT",
-                        "e.g. campus, compound, parcel.",
-                        "e.g. single family dwelling, office building.",
-                        "e.g. suite, room, hallway, cubicle.",
-                        "A terminal point represents a good location for a user to meet a taxi, ridesharing vehicle, or general driver.",
-                        "An area controlled in some way by an authoritative source, such as a government-designated COVID containment zone or an area under government sanctions. Features of this type should have one or more gcids corresponding to their specific regulation, and client handling of these features may vary based on the type of regulation.",
-                        "A grouping of TYPE_BORDER features (\"border segments\"), which together represent a border between two features of the same type.",
-                        "DEPRECATED",
-                        "A feature of completely unknown type. This should only be used when absolutely necessary. One example in which this type is useful is in the Chinese importer, which must heuristically segment addresses into components - it often does not know what types to make those components. Please note that the Oyster address formatter does not currently support address components of TYPE_UNKNOWN well."
-                    ],
-                    "type": "string"
-                },
-                "positionPrecisionMeters": {
-                    "description": "Precision of the center point (lat/long) of the geocoded FeatureProto",
-                    "format": "double",
-                    "type": "number"
-                },
-                "queryString": {
-                    "description": "The query sent to the geocoder",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GeographicDivision": {
             "description": "Describes a political geography.",
             "id": "GeographicDivision",
@@ -1678,12 +902,6 @@
             },
             "type": "object"
         },
-        "MessageSet": {
-            "description": "This is proto2's version of MessageSet.",
-            "id": "MessageSet",
-            "properties": {},
-            "type": "object"
-        },
         "Office": {
             "description": "Information about an Office held by one or more Officials.",
             "id": "Office",
@@ -1803,13 +1021,6 @@
                     },
                     "type": "array"
                 },
-                "geocodingSummaries": {
-                    "description": "Detailed summary about the official's address's geocoding",
-                    "items": {
-                        "$ref": "GeocodingSummary"
-                    },
-                    "type": "array"
-                },
                 "name": {
                     "description": "The official's name.",
                     "type": "string"
@@ -2146,7 +1357,7 @@
                     "type": "string"
                 },
                 "precincts": {
-                    "description": "The precincts that match this voter's address. Will only be returned for project IDs which have been whitelisted as \"partner projects\".",
+                    "description": "The precincts that match this voter's address. Will only be returned for project IDs which have been allowlisted as \"partner projects\".",
                     "items": {
                         "$ref": "Precinct"
                     },
@@ -2162,9 +1373,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Google Civic Information API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/classroom__v1.json b/discovery/googleapis/classroom__v1.json
index 8e84c42..2c8979f 100644
--- a/discovery/googleapis/classroom__v1.json
+++ b/discovery/googleapis/classroom__v1.json
@@ -86,6 +86,12 @@
     "name": "classroom",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230708",
+    "rootUrl": "https://classroom.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Classroom API",
+    "version": "v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -163,7 +169,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "courses": {
             "methods": {
@@ -1381,7 +1386,7 @@
                                     "enumDescriptions": [
                                         "No state specified. This is never returned.",
                                         "Status for course work material that has been published. This is the default state.",
-                                        "Status for an course work material that is not yet published. Course work material in this state is visible only to course teachers and domain administrators.",
+                                        "Status for a course work material that is not yet published. Course work material in this state is visible only to course teachers and domain administrators.",
                                         "Status for course work material that was published but is now deleted. Course work material in this state is visible only to course teachers and domain administrators. Course work material in this state is deleted after some time."
                                     ],
                                     "location": "query",
@@ -2398,8 +2403,6 @@
             }
         }
     },
-    "revision": "20230502",
-    "rootUrl": "https://classroom.googleapis.com/",
     "schemas": {
         "Announcement": {
             "description": "Announcement created by a teacher for students of the course",
@@ -2552,7 +2555,7 @@
                     "type": "string"
                 },
                 "calendarId": {
-                    "description": "The Calendar ID for a calendar that all course members can see, to which Classroom adds events for course work and announcements in the course. Read-only.",
+                    "description": "The Calendar ID for a calendar that all course members can see, to which Classroom adds events for course work and announcements in the course. The Calendar for a course is created asynchronously when the course is set to `CourseState.ACTIVE` for the first time (at creation time or when it is updated to `ACTIVE` through the UI or the API). The Calendar ID will not be populated until the creation process is completed. Read-only.",
                     "type": "string"
                 },
                 "courseGroupEmail": {
@@ -2941,7 +2944,7 @@
                     "enumDescriptions": [
                         "No state specified. This is never returned.",
                         "Status for course work material that has been published. This is the default state.",
-                        "Status for an course work material that is not yet published. Course work material in this state is visible only to course teachers and domain administrators.",
+                        "Status for a course work material that is not yet published. Course work material in this state is visible only to course teachers and domain administrators.",
                         "Status for course work material that was published but is now deleted. Course work material in this state is visible only to course teachers and domain administrators. Course work material in this state is deleted after some time."
                     ],
                     "type": "string"
@@ -4104,8 +4107,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Google Classroom API",
-    "version": "v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudasset__v1.json b/discovery/googleapis/cloudasset__v1.json
index 5f0cf25..02dc39e 100644
--- a/discovery/googleapis/cloudasset__v1.json
+++ b/discovery/googleapis/cloudasset__v1.json
@@ -24,6 +24,13 @@
     "name": "cloudasset",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230707",
+    "rootUrl": "https://cloudasset.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Asset API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "assets": {
             "methods": {
@@ -599,11 +605,6 @@
                             "location": "query",
                             "type": "boolean"
                         },
-                        "analysisQuery.options.includeDenyPolicyAnalysis": {
-                            "description": "Optional. If true, the response includes deny policy analysis results, and you can see which access tuples are denied. Default is false.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
                         "analysisQuery.options.outputGroupEdges": {
                             "description": "Optional. If true, the result will output the relevant membership relationships between groups and other groups, and between groups and principals. Default is false.",
                             "location": "query",
@@ -958,7 +959,7 @@
                     ]
                 },
                 "queryAssets": {
-                    "description": "Issue a job that queries assets using a SQL statement compatible with [BigQuery Standard SQL](http://cloud/bigquery/docs/reference/standard-sql/enabling-standard-sql). If the query execution finishes within timeout and there's no pagination, the full query results will be returned in the `QueryAssetsResponse`. Otherwise, full query results can be obtained by issuing extra requests with the `job_reference` from the a previous `QueryAssets` call. Note, the query result has approximately 10 GB limitation enforced by BigQuery https://cloud.google.com/bigquery/docs/best-practices-performance-output, queries return larger results will result in errors.",
+                    "description": "Issue a job that queries assets using a SQL statement compatible with [BigQuery SQL](https://cloud.google.com/bigquery/docs/introduction-sql). If the query execution finishes within timeout and there's no pagination, the full query results will be returned in the `QueryAssetsResponse`. Otherwise, full query results can be obtained by issuing extra requests with the `job_reference` from the a previous `QueryAssets` call. Note, the query result has approximately 10 GB limitation enforced by [BigQuery](https://cloud.google.com/bigquery/docs/best-practices-performance-output). Queries return larger results will result in errors.",
                     "flatPath": "v1/{v1Id}/{v1Id1}:queryAssets",
                     "httpMethod": "POST",
                     "id": "cloudasset.queryAssets",
@@ -1074,7 +1075,7 @@
                             "type": "string"
                         },
                         "readMask": {
-                            "description": "Optional. A comma-separated list of fields specifying which fields to be returned in ResourceSearchResult. Only '*' or combination of top level fields can be specified. Field names of both snake_case and camelCase are supported. Examples: `\"*\"`, `\"name,location\"`, `\"name,versionedResources\"`. The read_mask paths must be valid field paths listed but not limited to (both snake_case and camelCase are supported): * name * assetType * project * displayName * description * location * tagKeys * tagValues * tagValueIds * labels * networkTags * kmsKey (This field is deprecated. Please use the `kmsKeys` field to retrieve Cloud KMS key information.) * kmsKeys * createTime * updateTime * state * additionalAttributes * versionedResources If read_mask is not specified, all fields except versionedResources will be returned. If only '*' is specified, all fields including versionedResources will be returned. Any invalid field path will trigger INVALID_ARGUMENT error.",
+                            "description": "Optional. A comma-separated list of fields that you want returned in the results. The following fields are returned by default if not specified: * `name` * `assetType` * `project` * `folders` * `organization` * `displayName` * `description` * `location` * `labels` * `networkTags` * `kmsKeys` * `createTime` * `updateTime` * `state` * `additionalAttributes` * `parentFullResourceName` * `parentAssetType` Some fields of large size, such as `versionedResources` and `attachedResources`, are not returned by default, but you can specify them in the `read_mask` parameter if you want to include them. If `\"*\"` is specified, all [available fields](https://cloud.google.com/asset-inventory/docs/reference/rest/v1/TopLevel/searchAllResources#resourcesearchresult) are returned. Examples: `\"name,location\"`, `\"name,versionedResources\"`, `\"*\"`. Any invalid field path will trigger INVALID_ARGUMENT error.",
                             "format": "google-fieldmask",
                             "location": "query",
                             "type": "string"
@@ -1098,8 +1099,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://cloudasset.googleapis.com/",
     "schemas": {
         "AccessSelector": {
             "description": "Specifies roles and/or permissions to analyze, to determine both the identities possessing them and the resources they control. If multiple values are specified, results will include roles or permissions matching any of them. The total number of roles and permissions should be equal or less than 10.",
@@ -1588,24 +1587,6 @@
             },
             "type": "object"
         },
-        "DeniedAccess": {
-            "description": "A denied access contains details about an access tuple that is blocked by IAM deny policies.",
-            "id": "DeniedAccess",
-            "properties": {
-                "deniedAccessTuple": {
-                    "$ref": "GoogleCloudAssetV1DeniedAccessAccessTuple",
-                    "description": "A denied access tuple that is either fully or partially denied by IAM deny rules. This access tuple should match at least one access tuple derived from IamPolicyAnalysisResult."
-                },
-                "denyDetails": {
-                    "description": "The details about how denied_access_tuple is denied.",
-                    "items": {
-                        "$ref": "GoogleCloudAssetV1DeniedAccessDenyDetail"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "EffectiveIamPolicy": {
             "description": "The effective IAM policies on one resource.",
             "id": "EffectiveIamPolicy",
@@ -2085,98 +2066,6 @@
             },
             "type": "object"
         },
-        "GoogleCloudAssetV1DeniedAccessAccess": {
-            "description": "An IAM role or permission under analysis.",
-            "id": "GoogleCloudAssetV1DeniedAccessAccess",
-            "properties": {
-                "permission": {
-                    "description": "The IAM permission in [v1 format](https://cloud.google.com/iam/docs/permissions-reference)",
-                    "type": "string"
-                },
-                "role": {
-                    "description": "The IAM role.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudAssetV1DeniedAccessAccessTuple": {
-            "description": "An access tuple contains a tuple of a resource, an identity and an access.",
-            "id": "GoogleCloudAssetV1DeniedAccessAccessTuple",
-            "properties": {
-                "access": {
-                    "$ref": "GoogleCloudAssetV1DeniedAccessAccess",
-                    "description": "One access from IamPolicyAnalysisResult.AccessControlList.accesses."
-                },
-                "identity": {
-                    "$ref": "GoogleCloudAssetV1DeniedAccessIdentity",
-                    "description": "One identity from IamPolicyAnalysisResult.IdentityList.identities."
-                },
-                "resource": {
-                    "$ref": "GoogleCloudAssetV1DeniedAccessResource",
-                    "description": "One resource from IamPolicyAnalysisResult.AccessControlList.resources."
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudAssetV1DeniedAccessDenyDetail": {
-            "description": "A deny detail that explains which IAM deny rule denies the denied_access_tuple.",
-            "id": "GoogleCloudAssetV1DeniedAccessDenyDetail",
-            "properties": {
-                "accesses": {
-                    "description": "The denied accesses. If this deny_rule fully denies the denied_access_tuple, this field will be same as AccessTuple.access. Otherwise, this field can contain AccessTuple.access and its descendant accesses, such as a subset of IAM permissions contained in an IAM role.",
-                    "items": {
-                        "$ref": "GoogleCloudAssetV1DeniedAccessAccess"
-                    },
-                    "type": "array"
-                },
-                "denyRule": {
-                    "$ref": "GoogleIamV2DenyRule",
-                    "description": "A deny rule in an IAM deny policy."
-                },
-                "fullyDenied": {
-                    "description": "Whether the deny_rule fully denies all access granted by the denied_access_tuple. `True` means the deny rule fully blocks the access tuple. `False` means the deny rule partially blocks the access tuple.\"",
-                    "type": "boolean"
-                },
-                "identities": {
-                    "description": "If this deny_rule fully denies the denied_access_tuple, this field will be same as AccessTuple.identity. Otherwise, this field can contain AccessTuple.identity and its descendant identities, such as a subset of users in a group.",
-                    "items": {
-                        "$ref": "GoogleCloudAssetV1DeniedAccessIdentity"
-                    },
-                    "type": "array"
-                },
-                "resources": {
-                    "description": "The resources that the identities are denied access to. If this deny_rule fully denies the denied_access_tuple, this field will be same as AccessTuple.resource. Otherwise, this field can contain AccessTuple.resource and its descendant resources.",
-                    "items": {
-                        "$ref": "GoogleCloudAssetV1DeniedAccessResource"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudAssetV1DeniedAccessIdentity": {
-            "description": "An identity under analysis.",
-            "id": "GoogleCloudAssetV1DeniedAccessIdentity",
-            "properties": {
-                "name": {
-                    "description": "The identity of members, formatted as appear in an [IAM policy binding](https://cloud.google.com/iam/reference/rest/v1/Binding). For example, they might be formatted like the following: - user:foo@google.com - group:group1@google.com - serviceAccount:s1@prj1.iam.gserviceaccount.com - projectOwner:some_project_id - domain:google.com - allUsers",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudAssetV1DeniedAccessResource": {
-            "description": "A Google Cloud resource under analysis.",
-            "id": "GoogleCloudAssetV1DeniedAccessResource",
-            "properties": {
-                "fullResourceName": {
-                    "description": "The [full resource name](https://cloud.google.com/asset-inventory/docs/resource-name-format)",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudAssetV1Edge": {
             "description": "A directional edge.",
             "id": "GoogleCloudAssetV1Edge",
@@ -2315,7 +2204,7 @@
             "type": "object"
         },
         "GoogleCloudAssetV1Rule": {
-            "description": "Represents a rule defined in an organization policy",
+            "description": "This rule message is a customized version of the one defined in the Organization Policy system. In addition to the fields defined in the original organization policy, it contains additional field(s) under specific circumstances to support analysis results.",
             "id": "GoogleCloudAssetV1Rule",
             "properties": {
                 "allowAll": {
@@ -2620,45 +2509,6 @@
             "properties": {},
             "type": "object"
         },
-        "GoogleIamV2DenyRule": {
-            "description": "A deny rule in an IAM deny policy.",
-            "id": "GoogleIamV2DenyRule",
-            "properties": {
-                "denialCondition": {
-                    "$ref": "Expr",
-                    "description": "The condition that determines whether this deny rule applies to a request. If the condition expression evaluates to `true`, then the deny rule is applied; otherwise, the deny rule is not applied. Each deny rule is evaluated independently. If this deny rule does not apply to a request, other deny rules might still apply. The condition can use CEL functions that evaluate [resource tags](https://cloud.google.com/iam/help/conditions/resource-tags). Other functions and operators are not supported."
-                },
-                "deniedPermissions": {
-                    "description": "The permissions that are explicitly denied by this rule. Each permission uses the format `{service_fqdn}/{resource}.{verb}`, where `{service_fqdn}` is the fully qualified domain name for the service. For example, `iam.googleapis.com/roles.list`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "deniedPrincipals": {
-                    "description": "The identities that are prevented from using one or more permissions on Google Cloud resources. This field can contain the following values: * `principalSet://goog/public:all`: A special identifier that represents any principal that is on the internet, even if they do not have a Google Account or are not logged in. * `principal://goog/subject/{email_id}`: A specific Google Account. Includes Gmail, Cloud Identity, and Google Workspace user accounts. For example, `principal://goog/subject/alice@example.com`. * `deleted:principal://goog/subject/{email_id}?uid={uid}`: A specific Google Account that was deleted recently. For example, `deleted:principal://goog/subject/alice@example.com?uid=1234567890`. If the Google Account is recovered, this identifier reverts to the standard identifier for a Google Account. * `principalSet://goog/group/{group_id}`: A Google group. For example, `principalSet://goog/group/admins@example.com`. * `deleted:principalSet://goog/group/{group_id}?uid={uid}`: A Google group that was deleted recently. For example, `deleted:principalSet://goog/group/admins@example.com?uid=1234567890`. If the Google group is restored, this identifier reverts to the standard identifier for a Google group. * `principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}`: A Google Cloud service account. For example, `principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com`. * `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}?uid={uid}`: A Google Cloud service account that was deleted recently. For example, `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com?uid=1234567890`. If the service account is undeleted, this identifier reverts to the standard identifier for a service account. * `principalSet://goog/cloudIdentityCustomerId/{customer_id}`: All of the principals associated with the specified Google Workspace or Cloud Identity customer ID. For example, `principalSet://goog/cloudIdentityCustomerId/C01Abc35`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "exceptionPermissions": {
-                    "description": "Specifies the permissions that this rule excludes from the set of denied permissions given by `denied_permissions`. If a permission appears in `denied_permissions` _and_ in `exception_permissions` then it will _not_ be denied. The excluded permissions can be specified using the same syntax as `denied_permissions`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "exceptionPrincipals": {
-                    "description": "The identities that are excluded from the deny rule, even if they are listed in the `denied_principals`. For example, you could add a Google group to the `denied_principals`, then exclude specific users who belong to that group. This field can contain the same values as the `denied_principals` field, excluding `principalSet://goog/public:all`, which represents all users on the internet.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleIdentityAccesscontextmanagerV1AccessLevel": {
             "description": "An `AccessLevel` is a label that can be applied to requests to Google Cloud services, along with a list of requirements necessary for the label to be applied.",
             "id": "GoogleIdentityAccesscontextmanagerV1AccessLevel",
@@ -3213,13 +3063,6 @@
                     },
                     "type": "array"
                 },
-                "deniedAccesses": {
-                    "description": "A list of DeniedAccess, which contains all access tuples in the analysis_results that are denied by IAM deny policies. If no access tuples are denied, the list is empty. This is only populated when IamPolicyAnalysisQuery.Options.include_deny_policy_analysis is true.",
-                    "items": {
-                        "$ref": "DeniedAccess"
-                    },
-                    "type": "array"
-                },
                 "fullyExplored": {
                     "description": "Represents whether all entries in the analysis_results have been fully explored to answer the query.",
                     "type": "boolean"
@@ -3656,10 +3499,6 @@
                     "description": "Optional. If true, the access section of result will expand any roles appearing in IAM policy bindings to include their permissions. If IamPolicyAnalysisQuery.access_selector is specified, the access section of the result will be determined by the selector, and this flag is not allowed to set. Default is false.",
                     "type": "boolean"
                 },
-                "includeDenyPolicyAnalysis": {
-                    "description": "Optional. If true, the response includes deny policy analysis results, and you can see which access tuples are denied. Default is false.",
-                    "type": "boolean"
-                },
                 "outputGroupEdges": {
                     "description": "Optional. If true, the result will output the relevant membership relationships between groups and other groups, and between groups and principals. Default is false.",
                     "type": "boolean"
@@ -3877,7 +3716,7 @@
                     "description": "Optional. [start_time] is required. [start_time] must be less than [end_time] Defaults [end_time] to now if [start_time] is set and [end_time] isn't. Maximum permitted time range is 7 days."
                 },
                 "statement": {
-                    "description": "Optional. A SQL statement that's compatible with [BigQuery Standard SQL](http://cloud/bigquery/docs/reference/standard-sql/enabling-standard-sql).",
+                    "description": "Optional. A SQL statement that's compatible with [BigQuery SQL](https://cloud.google.com/bigquery/docs/introduction-sql).",
                     "type": "string"
                 },
                 "timeout": {
@@ -4203,7 +4042,7 @@
                     "type": "array"
                 },
                 "tagValueIds": {
-                    "description": "TagValue IDs, in the format of tagValues/{TAG_VALUE_ID}. To search against the `tagValueIds`: * Use a field query. Example: - `tagValueIds:\"456\"` - `tagValueIds=\"tagValues/456\"` * Use a free text query. Example: - `456`",
+                    "description": "TagValue IDs, in the format of tagValues/{TAG_VALUE_ID}. To search against the `tagValueIds`: * Use a field query. Example: - `tagValueIds=\"tagValues/456\"`",
                     "items": {
                         "type": "string"
                     },
@@ -4691,9 +4530,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Asset API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudbilling__v1.json b/discovery/googleapis/cloudbilling__v1.json
index 15eb8f3..83c8ce5 100644
--- a/discovery/googleapis/cloudbilling__v1.json
+++ b/discovery/googleapis/cloudbilling__v1.json
@@ -30,6 +30,12 @@
     "name": "cloudbilling",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230710",
+    "rootUrl": "https://cloudbilling.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Billing API",
+    "version": "v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -107,7 +113,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "billingAccounts": {
             "methods": {
@@ -519,8 +524,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://cloudbilling.googleapis.com/",
     "schemas": {
         "AggregationInfo": {
             "description": "Represents the aggregation level and interval for pricing of a single SKU.",
@@ -933,15 +936,18 @@
                     "type": "string"
                 },
                 "billingEnabled": {
-                    "description": "True if the project is associated with an open billing account, to which usage on the project is charged. False if the project is associated with a closed billing account, or no billing account at all, and therefore cannot use paid services. This field is read-only.",
+                    "description": "Output only. True if the project is associated with an open billing account, to which usage on the project is charged. False if the project is associated with a closed billing account, or no billing account at all, and therefore cannot use paid services.",
+                    "readOnly": true,
                     "type": "boolean"
                 },
                 "name": {
-                    "description": "The resource name for the `ProjectBillingInfo`; has the form `projects/{project_id}/billingInfo`. For example, the resource name for the billing information for project `tokyo-rain-123` would be `projects/tokyo-rain-123/billingInfo`. This field is read-only.",
+                    "description": "Output only. The resource name for the `ProjectBillingInfo`; has the form `projects/{project_id}/billingInfo`. For example, the resource name for the billing information for project `tokyo-rain-123` would be `projects/tokyo-rain-123/billingInfo`.",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "projectId": {
-                    "description": "The ID of the project that this `ProjectBillingInfo` represents, such as `tokyo-rain-123`. This is a convenience field so that you don't need to parse the `name` field to obtain a project ID. This field is read-only.",
+                    "description": "Output only. The ID of the project that this `ProjectBillingInfo` represents, such as `tokyo-rain-123`. This is a convenience field so that you don't need to parse the `name` field to obtain a project ID.",
+                    "readOnly": true,
                     "type": "string"
                 }
             },
@@ -1075,8 +1081,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Billing API",
-    "version": "v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudbuild__v1.json b/discovery/googleapis/cloudbuild__v1.json
index fbff438..ffd2f35 100644
--- a/discovery/googleapis/cloudbuild__v1.json
+++ b/discovery/googleapis/cloudbuild__v1.json
@@ -24,6 +24,13 @@
     "name": "cloudbuild",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230626",
+    "rootUrl": "https://cloudbuild.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Build API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "githubDotComWebhook": {
             "methods": {
@@ -399,7 +405,7 @@
                             ]
                         },
                         "retry": {
-                            "description": "Creates a new build based on the specified build. This method creates a new build using the original build request, which may or may not result in an identical build. For triggered builds: * Triggered builds resolve to a precise revision; therefore a retry of a triggered build will result in a build that uses the same revision. For non-triggered builds that specify `RepoSource`: * If the original build built from the tip of a branch, the retried build will build from the tip of that branch, which may not be the same revision as the original build. * If the original build specified a commit sha or revision ID, the retried build will use the identical source. For builds that specify `StorageSource`: * If the original build pulled source from Google Cloud Storage without specifying the generation of the object, the new build will use the current object, which may be different from the original build source. * If the original build pulled source from Cloud Storage and specified the generation of the object, the new build will attempt to use the same object, which may or may not be available depending on the bucket's lifecycle management settings.",
+                            "description": "Creates a new build based on the specified build. This method creates a new build using the original build request, which may or may not result in an identical build. For triggered builds: * Triggered builds resolve to a precise revision; therefore a retry of a triggered build will result in a build that uses the same revision. For non-triggered builds that specify `RepoSource`: * If the original build built from the tip of a branch, the retried build will build from the tip of that branch, which may not be the same revision as the original build. * If the original build specified a commit sha or revision ID, the retried build will use the identical source. For builds that specify `StorageSource`: * If the original build pulled source from Cloud Storage without specifying the generation of the object, the new build will use the current object, which may be different from the original build source. * If the original build pulled source from Cloud Storage and specified the generation of the object, the new build will attempt to use the same object, which may or may not be available depending on the bucket's lifecycle management settings.",
                             "flatPath": "v1/projects/{projectId}/builds/{id}:retry",
                             "httpMethod": "POST",
                             "id": "cloudbuild.projects.builds.retry",
@@ -1044,7 +1050,7 @@
                                     ]
                                 },
                                 "retry": {
-                                    "description": "Creates a new build based on the specified build. This method creates a new build using the original build request, which may or may not result in an identical build. For triggered builds: * Triggered builds resolve to a precise revision; therefore a retry of a triggered build will result in a build that uses the same revision. For non-triggered builds that specify `RepoSource`: * If the original build built from the tip of a branch, the retried build will build from the tip of that branch, which may not be the same revision as the original build. * If the original build specified a commit sha or revision ID, the retried build will use the identical source. For builds that specify `StorageSource`: * If the original build pulled source from Google Cloud Storage without specifying the generation of the object, the new build will use the current object, which may be different from the original build source. * If the original build pulled source from Cloud Storage and specified the generation of the object, the new build will attempt to use the same object, which may or may not be available depending on the bucket's lifecycle management settings.",
+                                    "description": "Creates a new build based on the specified build. This method creates a new build using the original build request, which may or may not result in an identical build. For triggered builds: * Triggered builds resolve to a precise revision; therefore a retry of a triggered build will result in a build that uses the same revision. For non-triggered builds that specify `RepoSource`: * If the original build built from the tip of a branch, the retried build will build from the tip of that branch, which may not be the same revision as the original build. * If the original build specified a commit sha or revision ID, the retried build will use the identical source. For builds that specify `StorageSource`: * If the original build pulled source from Cloud Storage without specifying the generation of the object, the new build will use the current object, which may be different from the original build source. * If the original build pulled source from Cloud Storage and specified the generation of the object, the new build will attempt to use the same object, which may or may not be available depending on the bucket's lifecycle management settings.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/builds/{buildsId}:retry",
                                     "httpMethod": "POST",
                                     "id": "cloudbuild.projects.locations.builds.retry",
@@ -2305,8 +2311,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://cloudbuild.googleapis.com/",
     "schemas": {
         "ApprovalConfig": {
             "description": "ApprovalConfig describes configuration for manual approval of a build.",
@@ -2405,7 +2409,7 @@
                     "type": "array"
                 },
                 "location": {
-                    "description": "The path of an artifact in a Google Cloud Storage bucket, with the generation number. For example, `gs://mybucket/path/to/output.jar#generation`.",
+                    "description": "The path of an artifact in a Cloud Storage bucket, with the generation number. For example, `gs://mybucket/path/to/output.jar#generation`.",
                     "type": "string"
                 }
             },
@@ -2777,7 +2781,7 @@
                     "type": "string"
                 },
                 "logsBucket": {
-                    "description": "Google Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
+                    "description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
                     "type": "string"
                 },
                 "name": {
@@ -2989,7 +2993,7 @@
                     "type": "array"
                 },
                 "logStreamingOption": {
-                    "description": "Option to define build log streaming behavior to Google Cloud Storage.",
+                    "description": "Option to define build log streaming behavior to Cloud Storage.",
                     "enum": [
                         "STREAM_DEFAULT",
                         "STREAM_ON",
@@ -2997,8 +3001,8 @@
                     ],
                     "enumDescriptions": [
                         "Service may automatically determine build log streaming behavior.",
-                        "Build logs should be streamed to Google Cloud Storage.",
-                        "Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed."
+                        "Build logs should be streamed to Cloud Storage.",
+                        "Build logs should not be streamed to Cloud Storage; they will be written when the build is completed."
                     ],
                     "type": "string"
                 },
@@ -3029,14 +3033,16 @@
                         "N1_HIGHCPU_8",
                         "N1_HIGHCPU_32",
                         "E2_HIGHCPU_8",
-                        "E2_HIGHCPU_32"
+                        "E2_HIGHCPU_32",
+                        "E2_MEDIUM"
                     ],
                     "enumDescriptions": [
                         "Standard machine type.",
                         "Highcpu machine with 8 CPUs.",
                         "Highcpu machine with 32 CPUs.",
                         "Highcpu e2 machine with 8 CPUs.",
-                        "Highcpu e2 machine with 32 CPUs."
+                        "Highcpu e2 machine with 32 CPUs.",
+                        "E2 machine with 1 CPU."
                     ],
                     "type": "string"
                 },
@@ -3715,7 +3721,7 @@
                     "type": "string"
                 },
                 "repository": {
-                    "description": "The fully qualified resource name of the Repo API repository. Either uri or repository can be specified. If unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path.",
+                    "description": "The fully qualified resource name of the Repos API repository. Either URI or repository can be specified. If unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path.",
                     "type": "string"
                 },
                 "revision": {
@@ -4056,11 +4062,11 @@
                     "type": "string"
                 },
                 "repository": {
-                    "description": "The qualified resource name of the Repo API repository Either uri or repository can be specified and is required.",
+                    "description": "The connected repository resource name, in the format `projects/*/locations/*/connections/*/repositories/*`. Either `uri` or `repository` can be specified and is required.",
                     "type": "string"
                 },
                 "uri": {
-                    "description": "The URI of the repo. Either uri or repository can be specified and is required.",
+                    "description": "The URI of the repo (e.g. https://github.com/user/repo.git). Either `uri` or `repository` can be specified and is required.",
                     "type": "string"
                 }
             },
@@ -4887,11 +4893,11 @@
                 },
                 "storageSource": {
                     "$ref": "StorageSource",
-                    "description": "If provided, get the source from this location in Google Cloud Storage."
+                    "description": "If provided, get the source from this location in Cloud Storage."
                 },
                 "storageSourceManifest": {
                     "$ref": "StorageSourceManifest",
-                    "description": "If provided, get the source from this manifest in Google Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher)."
+                    "description": "If provided, get the source from this manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher)."
                 }
             },
             "type": "object"
@@ -4951,40 +4957,40 @@
             "type": "object"
         },
         "StorageSource": {
-            "description": "Location of the source in an archive file in Google Cloud Storage.",
+            "description": "Location of the source in an archive file in 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)).",
+                    "description": "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.",
+                    "description": "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 zipped (`.zip`) or gzipped archive file (`.tar.gz`) containing source to build.",
+                    "description": "Cloud Storage object containing the source. This object must be a zipped (`.zip`) or gzipped archive file (`.tar.gz`) containing source to build.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
         "StorageSourceManifest": {
-            "description": "Location of the source manifest in Google Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).",
+            "description": "Location of the source manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).",
             "id": "StorageSourceManifest",
             "properties": {
                 "bucket": {
-                    "description": "Google Cloud Storage bucket containing the source manifest (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+                    "description": "Cloud Storage bucket containing the source manifest (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.",
+                    "description": "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 manifest. This object must be a JSON file.",
+                    "description": "Cloud Storage object containing the source manifest. This object must be a JSON file.",
                     "type": "string"
                 }
             },
@@ -5310,9 +5316,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Build API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudchannel__v1.json b/discovery/googleapis/cloudchannel__v1.json
index ffc58d5..c4a7dc6 100644
--- a/discovery/googleapis/cloudchannel__v1.json
+++ b/discovery/googleapis/cloudchannel__v1.json
@@ -27,6 +27,13 @@
     "name": "cloudchannel",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230710",
+    "rootUrl": "https://cloudchannel.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Channel API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "accounts": {
             "methods": {
@@ -591,7 +597,7 @@
                         "customers": {
                             "methods": {
                                 "create": {
-                                    "description": "Creates a new Customer resource under the reseller or distributor account. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * Domain field value doesn't match the primary email domain. Return value: The newly created Customer resource.",
+                                    "description": "Creates a new Customer resource under the reseller or distributor account. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * PERMISSION_DENIED: You are not authorized to create a customer. See https://support.google.com/channelservices/answer/9759265 * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * Domain field value doesn't match the primary email domain. Return value: The newly created Customer resource.",
                                     "flatPath": "v1/accounts/{accountsId}/channelPartnerLinks/{channelPartnerLinksId}/customers",
                                     "httpMethod": "POST",
                                     "id": "cloudchannel.accounts.channelPartnerLinks.customers.create",
@@ -669,7 +675,7 @@
                                     ]
                                 },
                                 "import": {
-                                    "description": "Imports a Customer from the Cloud Identity associated with the provided Cloud Identity ID or domain before a TransferEntitlements call. If a linked Customer already exists and overwrite_if_exists is true, it will update that Customer's data. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * NOT_FOUND: Cloud Identity doesn't exist or was deleted. * INVALID_ARGUMENT: Required parameters are missing, or the auth_token is expired or invalid. * ALREADY_EXISTS: A customer already exists and has conflicting critical fields. Requires an overwrite. Return value: The Customer.",
+                                    "description": "Imports a Customer from the Cloud Identity associated with the provided Cloud Identity ID or domain before a TransferEntitlements call. If a linked Customer already exists and overwrite_if_exists is true, it will update that Customer's data. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * PERMISSION_DENIED: You are not authorized to import the customer. See https://support.google.com/channelservices/answer/9759265 * NOT_FOUND: Cloud Identity doesn't exist or was deleted. * INVALID_ARGUMENT: Required parameters are missing, or the auth_token is expired or invalid. * ALREADY_EXISTS: A customer already exists and has conflicting critical fields. Requires an overwrite. Return value: The Customer.",
                                     "flatPath": "v1/accounts/{accountsId}/channelPartnerLinks/{channelPartnerLinksId}/customers:import",
                                     "httpMethod": "POST",
                                     "id": "cloudchannel.accounts.channelPartnerLinks.customers.import",
@@ -778,7 +784,7 @@
                 "customers": {
                     "methods": {
                         "create": {
-                            "description": "Creates a new Customer resource under the reseller or distributor account. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * Domain field value doesn't match the primary email domain. Return value: The newly created Customer resource.",
+                            "description": "Creates a new Customer resource under the reseller or distributor account. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * PERMISSION_DENIED: You are not authorized to create a customer. See https://support.google.com/channelservices/answer/9759265 * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * Domain field value doesn't match the primary email domain. Return value: The newly created Customer resource.",
                             "flatPath": "v1/accounts/{accountsId}/customers",
                             "httpMethod": "POST",
                             "id": "cloudchannel.accounts.customers.create",
@@ -856,7 +862,7 @@
                             ]
                         },
                         "import": {
-                            "description": "Imports a Customer from the Cloud Identity associated with the provided Cloud Identity ID or domain before a TransferEntitlements call. If a linked Customer already exists and overwrite_if_exists is true, it will update that Customer's data. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * NOT_FOUND: Cloud Identity doesn't exist or was deleted. * INVALID_ARGUMENT: Required parameters are missing, or the auth_token is expired or invalid. * ALREADY_EXISTS: A customer already exists and has conflicting critical fields. Requires an overwrite. Return value: The Customer.",
+                            "description": "Imports a Customer from the Cloud Identity associated with the provided Cloud Identity ID or domain before a TransferEntitlements call. If a linked Customer already exists and overwrite_if_exists is true, it will update that Customer's data. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * PERMISSION_DENIED: You are not authorized to import the customer. See https://support.google.com/channelservices/answer/9759265 * NOT_FOUND: Cloud Identity doesn't exist or was deleted. * INVALID_ARGUMENT: Required parameters are missing, or the auth_token is expired or invalid. * ALREADY_EXISTS: A customer already exists and has conflicting critical fields. Requires an overwrite. Return value: The Customer.",
                             "flatPath": "v1/accounts/{accountsId}/customers:import",
                             "httpMethod": "POST",
                             "id": "cloudchannel.accounts.customers.import",
@@ -933,6 +939,11 @@
                                 "customer"
                             ],
                             "parameters": {
+                                "changeOfferPurchase.billingAccount": {
+                                    "description": "Optional. Resource name of the new target Billing Account. Provide this Billing Account when setting up billing for a trial subscription. Format: accounts/{account_id}/billingAccounts/{billing_account_id}. This field is only relevant for multi-currency accounts. It should be left empty for single currency accounts.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "changeOfferPurchase.entitlement": {
                                     "description": "Required. Resource name of the entitlement. Format: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}",
                                     "location": "query",
@@ -943,6 +954,11 @@
                                     "location": "query",
                                     "type": "string"
                                 },
+                                "createEntitlementPurchase.billingAccount": {
+                                    "description": "Optional. Billing account that the result should be restricted to. Format: accounts/{account_id}/billingAccounts/{billing_account_id}.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "createEntitlementPurchase.sku": {
                                     "description": "Required. SKU that the result should be restricted to. Format: products/{product_id}/skus/{sku_id}.",
                                     "location": "query",
@@ -1081,7 +1097,7 @@
                             ]
                         },
                         "provisionCloudIdentity": {
-                            "description": "Creates a Cloud Identity for the given customer using the customer's information, or the information provided here. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer was not found. * ALREADY_EXISTS: The customer's primary email already exists. Retry after changing the customer's primary contact email. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The Operation metadata contains an instance of OperationMetadata.",
+                            "description": "Creates a Cloud Identity for the given customer using the customer's information, or the information provided here. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller. * PERMISSION_DENIED: You are not authorized to provision cloud identity id. See https://support.google.com/channelservices/answer/9759265 * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer was not found. * ALREADY_EXISTS: The customer's primary email already exists. Retry after changing the customer's primary contact email. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The Operation metadata contains an instance of OperationMetadata.",
                             "flatPath": "v1/accounts/{accountsId}/customers/{customersId}:provisionCloudIdentity",
                             "httpMethod": "POST",
                             "id": "cloudchannel.accounts.customers.provisionCloudIdentity",
@@ -1864,6 +1880,88 @@
                             ]
                         }
                     }
+                },
+                "skuGroups": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists the Rebilling supported SKU groups the account is authorized to sell. Reference: https://cloud.google.com/skus/sku-groups Possible Error Codes: * PERMISSION_DENIED: If the account making the request and the account being queried are different, or the account doesn't exist. * INTERNAL: Any non-user error related to technical issues in the backend. In this case, contact Cloud Channel support. Return Value: If successful, the SkuGroup resources. The data for each resource is displayed in the alphabetical order of SKU group display name. The data for each resource is displayed in the ascending order of SkuGroup.display_name If unsuccessful, returns an error.",
+                            "flatPath": "v1/accounts/{accountsId}/skuGroups",
+                            "httpMethod": "GET",
+                            "id": "cloudchannel.accounts.skuGroups.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of SKU groups to return. The service may return fewer than this value. If unspecified, returns a maximum of 1000 SKU groups. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. A token identifying a page of results beyond the first page. Obtained through ListSkuGroups.next_page_token of the previous CloudChannelService.ListSkuGroups call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. The resource name of the account from which to list SKU groups. Parent uses the format: accounts/{account}.",
+                                    "location": "path",
+                                    "pattern": "^accounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/skuGroups",
+                            "response": {
+                                "$ref": "GoogleCloudChannelV1ListSkuGroupsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/apps.order"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "billableSkus": {
+                            "methods": {
+                                "list": {
+                                    "description": "Lists the Billable SKUs in a given SKU group. Possible error codes: PERMISSION_DENIED: If the account making the request and the account being queried for are different, or the account doesn't exist. INVALID_ARGUMENT: Missing or invalid required parameters in the request. INTERNAL: Any non-user error related to technical issue in the backend. In this case, contact cloud channel support. Return Value: If successful, the BillableSku resources. The data for each resource is displayed in the ascending order of: * BillableSku.service_display_name * BillableSku.sku_display_name If unsuccessful, returns an error.",
+                                    "flatPath": "v1/accounts/{accountsId}/skuGroups/{skuGroupsId}/billableSkus",
+                                    "httpMethod": "GET",
+                                    "id": "cloudchannel.accounts.skuGroups.billableSkus.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageSize": {
+                                            "description": "Optional. The maximum number of SKUs to return. The service may return fewer than this value. If unspecified, returns a maximum of 100000 SKUs. The maximum value is 100000; values above 100000 will be coerced to 100000.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "Optional. A token identifying a page of results beyond the first page. Obtained through ListSkuGroupBillableSkus.next_page_token of the previous CloudChannelService.ListSkuGroupBillableSkus call.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Resource name of the SKU group. Format: accounts/{account}/skuGroups/{sku_group}.",
+                                            "location": "path",
+                                            "pattern": "^accounts/[^/]+/skuGroups/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/billableSkus",
+                                    "response": {
+                                        "$ref": "GoogleCloudChannelV1ListSkuGroupBillableSkusResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/apps.order"
+                                    ]
+                                }
+                            }
+                        }
+                    }
                 }
             }
         },
@@ -2084,8 +2182,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://cloudchannel.googleapis.com/",
     "schemas": {
         "GoogleCloudChannelV1ActivateEntitlementRequest": {
             "description": "Request message for CloudChannelService.ActivateEntitlement.",
@@ -2128,6 +2224,29 @@
             },
             "type": "object"
         },
+        "GoogleCloudChannelV1BillableSku": {
+            "description": "Represents the Billable SKU information.",
+            "id": "GoogleCloudChannelV1BillableSku",
+            "properties": {
+                "service": {
+                    "description": "Resource name of Service which contains Repricing SKU. Format: services/{service}. Example: \"services/B7D9-FDCB-15D8\".",
+                    "type": "string"
+                },
+                "serviceDisplayName": {
+                    "description": "Unique human readable name for the Service.",
+                    "type": "string"
+                },
+                "sku": {
+                    "description": "Resource name of Billable SKU. Format: billableSkus/{sku}. Example: billableSkus/6E1B-6634-470F\".",
+                    "type": "string"
+                },
+                "skuDisplayName": {
+                    "description": "Unique human readable name for the SKU.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudChannelV1BillingAccount": {
             "description": "Represents a billing account.",
             "id": "GoogleCloudChannelV1BillingAccount",
@@ -2186,6 +2305,10 @@
             "description": "Request message for CloudChannelService.ChangeOffer.",
             "id": "GoogleCloudChannelV1ChangeOfferRequest",
             "properties": {
+                "billingAccount": {
+                    "description": "Optional. The billing account resource name that is used to pay for this entitlement when setting up billing on a trial subscription. This field is only relevant for multi-currency accounts. It should be left empty for single currency accounts.",
+                    "type": "string"
+                },
                 "offer": {
                     "description": "Required. New Offer. Format: accounts/{account_id}/offers/{offer_id}.",
                     "type": "string"
@@ -3378,6 +3501,42 @@
             },
             "type": "object"
         },
+        "GoogleCloudChannelV1ListSkuGroupBillableSkusResponse": {
+            "description": "Response message for ListSkuGroupBillableSkus.",
+            "id": "GoogleCloudChannelV1ListSkuGroupBillableSkusResponse",
+            "properties": {
+                "billableSkus": {
+                    "description": "The list of billable SKUs in the requested SKU group.",
+                    "items": {
+                        "$ref": "GoogleCloudChannelV1BillableSku"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results. Pass to ListSkuGroupBillableSkus.page_token to obtain that page.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudChannelV1ListSkuGroupsResponse": {
+            "description": "Response message for ListSkuGroups.",
+            "id": "GoogleCloudChannelV1ListSkuGroupsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results. Pass to ListSkuGroups.page_token to obtain that page.",
+                    "type": "string"
+                },
+                "skuGroups": {
+                    "description": "The list of SKU groups requested.",
+                    "items": {
+                        "$ref": "GoogleCloudChannelV1SkuGroup"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudChannelV1ListSkusResponse": {
             "description": "Response message for ListSkus.",
             "id": "GoogleCloudChannelV1ListSkusResponse",
@@ -3422,6 +3581,10 @@
             "description": "Request message for CloudChannelService.ListTransferableOffers",
             "id": "GoogleCloudChannelV1ListTransferableOffersRequest",
             "properties": {
+                "billingAccount": {
+                    "description": "Optional. The Billing Account to look up Offers for. Format: accounts/{account_id}/billingAccounts/{billing_account_id}. This field is only relevant for multi-currency accounts. It should be left empty for single currency accounts.",
+                    "type": "string"
+                },
                 "cloudIdentityId": {
                     "description": "Customer's Cloud Identity ID",
                     "type": "string"
@@ -3712,13 +3875,15 @@
                         "PARAMETER_TYPE_UNSPECIFIED",
                         "INT64",
                         "STRING",
-                        "DOUBLE"
+                        "DOUBLE",
+                        "BOOLEAN"
                     ],
                     "enumDescriptions": [
                         "Not used.",
                         "Int64 type.",
                         "String type.",
-                        "Double type."
+                        "Double type.",
+                        "Boolean type."
                     ],
                     "type": "string"
                 }
@@ -3992,7 +4157,7 @@
                     "type": "string"
                 },
                 "provisioningId": {
-                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this is the underlying Subscription ID. For Google Cloud, this is the Billing Account ID of the billing subaccount.\"",
+                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this is the underlying Subscription ID. For Google Cloud, this is the Billing Account ID of the billing subaccount.",
                     "readOnly": true,
                     "type": "string"
                 },
@@ -4387,6 +4552,21 @@
             },
             "type": "object"
         },
+        "GoogleCloudChannelV1SkuGroup": {
+            "description": "Represents the SKU group information.",
+            "id": "GoogleCloudChannelV1SkuGroup",
+            "properties": {
+                "displayName": {
+                    "description": "Unique human readable identifier for the SKU group.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Resource name of SKU group. Format: accounts/{account}/skuGroups/{sku_group}. Example: \"accounts/C01234/skuGroups/3d50fd57-3157-4577-a5a9-a219b8490041\".",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudChannelV1SkuGroupCondition": {
             "description": "A condition that applies the override if a line item SKU is found in the SKU group.",
             "id": "GoogleCloudChannelV1SkuGroupCondition",
@@ -5075,7 +5255,7 @@
                     "type": "string"
                 },
                 "provisioningId": {
-                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this is the underlying Subscription ID. For Google Cloud, this is the Billing Account ID of the billing subaccount.\"",
+                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this is the underlying Subscription ID. For Google Cloud, this is the Billing Account ID of the billing subaccount.",
                     "readOnly": true,
                     "type": "string"
                 },
@@ -5616,9 +5796,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Channel API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/clouddebugger__v2.json b/discovery/googleapis/clouddebugger__v2.json
index a542e4c..6b3e640 100644
--- a/discovery/googleapis/clouddebugger__v2.json
+++ b/discovery/googleapis/clouddebugger__v2.json
@@ -15,7 +15,7 @@
     "baseUrl": "https://clouddebugger.googleapis.com/",
     "batchPath": "batch",
     "canonicalName": "Cloud Debugger",
-    "description": "Examines the call stack and variables of a running application without stopping or slowing it down. ",
+    "description": "Examines the call stack and variables of a running application without stopping or slowing it down. (Deprecated) ",
     "discoveryVersion": "v1",
     "documentationLink": "https://cloud.google.com/debugger",
     "icons": {
@@ -27,6 +27,13 @@
     "name": "clouddebugger",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230629",
+    "rootUrl": "https://clouddebugger.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Debugger API (Deprecated)",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "controller": {
             "resources": {
@@ -446,8 +452,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://clouddebugger.googleapis.com/",
     "schemas": {
         "AliasContext": {
             "description": "An alias to a repo revision.",
@@ -1116,9 +1120,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Debugger API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/clouddeploy__v1.json b/discovery/googleapis/clouddeploy__v1.json
index fca1963..7526432 100644
--- a/discovery/googleapis/clouddeploy__v1.json
+++ b/discovery/googleapis/clouddeploy__v1.json
@@ -24,6 +24,13 @@
     "name": "clouddeploy",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230621",
+    "rootUrl": "https://clouddeploy.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Cloud Deploy API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -1200,7 +1206,7 @@
                                     ],
                                     "parameters": {
                                         "allowMissing": {
-                                            "description": "Optional. If set to true, then deleting an already deleted or non-existing DeliveryPipeline will succeed.",
+                                            "description": "Optional. If set to true, then deleting an already deleted or non-existing `Target` will succeed.",
                                             "location": "query",
                                             "type": "boolean"
                                         },
@@ -1449,8 +1455,6 @@
             }
         }
     },
-    "revision": "20230503",
-    "rootUrl": "https://clouddeploy.googleapis.com/",
     "schemas": {
         "AbandonReleaseRequest": {
             "description": "The request object used by `AbandonRelease`.",
@@ -1931,11 +1935,15 @@
                     "enum": [
                         "TYPE_UNSPECIFIED",
                         "TYPE_PUBSUB_NOTIFICATION_FAILURE",
+                        "TYPE_RESOURCE_STATE_CHANGE",
+                        "TYPE_PROCESS_ABORTED",
                         "TYPE_RENDER_STATUES_CHANGE"
                     ],
                     "enumDescriptions": [
                         "Type is unspecified.",
                         "A Pub/Sub notification failed to be sent.",
+                        "Resource state changed.",
+                        "A process aborted.",
                         "Deprecated: This field is never used. Use release_render log type instead."
                     ],
                     "type": "string"
@@ -2029,6 +2037,27 @@
             },
             "type": "object"
         },
+        "DeployParameters": {
+            "description": "DeployParameters contains deploy parameters information.",
+            "id": "DeployParameters",
+            "properties": {
+                "matchTargetLabels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. Deploy parameters are applied to targets with match labels. If unspecified, deploy parameters are applied to all targets (including child targets of a multi-target).",
+                    "type": "object"
+                },
+                "values": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Required. Values are deploy parameters in key-value pairs.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
         "DeploymentJobs": {
             "description": "Deployment job composition.",
             "id": "DeploymentJobs",
@@ -2373,11 +2402,15 @@
                     "enum": [
                         "TYPE_UNSPECIFIED",
                         "TYPE_PUBSUB_NOTIFICATION_FAILURE",
+                        "TYPE_RESOURCE_STATE_CHANGE",
+                        "TYPE_PROCESS_ABORTED",
                         "TYPE_RENDER_STATUES_CHANGE"
                     ],
                     "enumDescriptions": [
                         "Type is unspecified.",
                         "A Pub/Sub notification failed to be sent.",
+                        "Resource state changed.",
+                        "A process aborted.",
                         "Deprecated: This field is never used. Use release_render log type instead."
                     ],
                     "type": "string"
@@ -2923,6 +2956,13 @@
                     "description": "Output only. Snapshot of the parent pipeline taken at release creation time.",
                     "readOnly": true
                 },
+                "deployParameters": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. The deploy parameters to use for all targets in this release.",
+                    "type": "object"
+                },
                 "description": {
                     "description": "Description of the `Release`. Max length is 255 characters.",
                     "type": "string"
@@ -3047,11 +3087,15 @@
                     "enum": [
                         "TYPE_UNSPECIFIED",
                         "TYPE_PUBSUB_NOTIFICATION_FAILURE",
+                        "TYPE_RESOURCE_STATE_CHANGE",
+                        "TYPE_PROCESS_ABORTED",
                         "TYPE_RENDER_STATUES_CHANGE"
                     ],
                     "enumDescriptions": [
                         "Type is unspecified.",
                         "A Pub/Sub notification failed to be sent.",
+                        "Resource state changed.",
+                        "A process aborted.",
                         "Deprecated: This field is never used. Use release_render log type instead."
                     ],
                     "type": "string"
@@ -3322,11 +3366,15 @@
                     "enum": [
                         "TYPE_UNSPECIFIED",
                         "TYPE_PUBSUB_NOTIFICATION_FAILURE",
+                        "TYPE_RESOURCE_STATE_CHANGE",
+                        "TYPE_PROCESS_ABORTED",
                         "TYPE_RENDER_STATUES_CHANGE"
                     ],
                     "enumDescriptions": [
                         "Type is unspecified.",
                         "A Pub/Sub notification failed to be sent.",
+                        "Resource state changed.",
+                        "A process aborted.",
                         "Deprecated: This field is never used. Use release_render log type instead."
                     ],
                     "type": "string"
@@ -3371,6 +3419,10 @@
                     "description": "Required. Name of the Kubernetes Deployment whose traffic is managed by the specified Service.",
                     "type": "string"
                 },
+                "disablePodOverprovisioning": {
+                    "description": "Optional. Whether to disable Pod overprovisioning. If Pod overprovisioning is disabled then Cloud Deploy will limit the number of total Pods used for the deployment strategy to the number of Pods the Deployment has on the cluster.",
+                    "type": "boolean"
+                },
                 "service": {
                     "description": "Required. Name of the Kubernetes Service.",
                     "type": "string"
@@ -3460,6 +3512,13 @@
             "description": "Stage specifies a location to which to deploy.",
             "id": "Stage",
             "properties": {
+                "deployParameters": {
+                    "description": "Optional. The deploy parameters to use for the target in this stage.",
+                    "items": {
+                        "$ref": "DeployParameters"
+                    },
+                    "type": "array"
+                },
                 "profiles": {
                     "description": "Skaffold profiles to use when rendering the manifest for this stage's `Target`.",
                     "items": {
@@ -3544,7 +3603,7 @@
                 },
                 "anthosCluster": {
                     "$ref": "AnthosCluster",
-                    "description": "Information specifying an Anthos Cluster."
+                    "description": "Optional. Information specifying an Anthos Cluster."
                 },
                 "createTime": {
                     "description": "Output only. Time at which the `Target` was created.",
@@ -3552,6 +3611,13 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "deployParameters": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. The deploy parameters to use for this target.",
+                    "type": "object"
+                },
                 "description": {
                     "description": "Optional. Description of the `Target`. Max length is 255 characters.",
                     "type": "string"
@@ -3569,7 +3635,7 @@
                 },
                 "gke": {
                     "$ref": "GkeCluster",
-                    "description": "Information specifying a GKE Cluster."
+                    "description": "Optional. Information specifying a GKE Cluster."
                 },
                 "labels": {
                     "additionalProperties": {
@@ -3580,7 +3646,7 @@
                 },
                 "multiTarget": {
                     "$ref": "MultiTarget",
-                    "description": "Information specifying a multiTarget."
+                    "description": "Optional. Information specifying a multiTarget."
                 },
                 "name": {
                     "description": "Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/targets/a-z{0,62}.",
@@ -3592,7 +3658,7 @@
                 },
                 "run": {
                     "$ref": "CloudRunLocation",
-                    "description": "Information specifying a Cloud Run deployment target."
+                    "description": "Optional. Information specifying a Cloud Run deployment target."
                 },
                 "targetId": {
                     "description": "Output only. Resource id of the `Target`.",
@@ -3660,11 +3726,15 @@
                     "enum": [
                         "TYPE_UNSPECIFIED",
                         "TYPE_PUBSUB_NOTIFICATION_FAILURE",
+                        "TYPE_RESOURCE_STATE_CHANGE",
+                        "TYPE_PROCESS_ABORTED",
                         "TYPE_RENDER_STATUES_CHANGE"
                     ],
                     "enumDescriptions": [
                         "Type is unspecified.",
                         "A Pub/Sub notification failed to be sent.",
+                        "Resource state changed.",
+                        "A process aborted.",
                         "Deprecated: This field is never used. Use release_render log type instead."
                     ],
                     "type": "string"
@@ -3860,9 +3930,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Google Cloud Deploy API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudfunctions__v1.json b/discovery/googleapis/cloudfunctions__v1.json
index cf0192b..aaa885e 100644
--- a/discovery/googleapis/cloudfunctions__v1.json
+++ b/discovery/googleapis/cloudfunctions__v1.json
@@ -24,6 +24,13 @@
     "name": "cloudfunctions",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230629",
+    "rootUrl": "https://cloudfunctions.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Functions API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "operations": {
             "methods": {
@@ -544,8 +550,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "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.",
@@ -700,7 +704,7 @@
                     "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`.",
+                    "description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix (ID of the function), if not specified.",
                     "type": "string"
                 },
                 "environmentVariables": {
@@ -995,7 +999,7 @@
                     "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`.",
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
                     "type": "boolean"
                 },
                 "createTime": {
@@ -1166,7 +1170,7 @@
                     "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`.",
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
                     "type": "boolean"
                 },
                 "createTime": {
@@ -1337,7 +1341,7 @@
                     "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`.",
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
                     "type": "boolean"
                 },
                 "createTime": {
@@ -1876,9 +1880,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Functions API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudfunctions__v2.json b/discovery/googleapis/cloudfunctions__v2.json
index 251defa..199cbad 100644
--- a/discovery/googleapis/cloudfunctions__v2.json
+++ b/discovery/googleapis/cloudfunctions__v2.json
@@ -24,6 +24,13 @@
     "name": "cloudfunctions",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230629",
+    "rootUrl": "https://cloudfunctions.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Functions API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -569,8 +575,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "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.",
@@ -840,6 +844,11 @@
                     "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
                     "type": "string"
                 },
+                "satisfiesPzs": {
+                    "description": "Output only. Reserved for future use.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
                 "serviceConfig": {
                     "$ref": "ServiceConfig",
                     "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
@@ -878,6 +887,11 @@
                     "format": "google-datetime",
                     "readOnly": true,
                     "type": "string"
+                },
+                "url": {
+                    "description": "Output only. The deployed url for the function.",
+                    "readOnly": true,
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -958,7 +972,7 @@
                     "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`.",
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
                     "type": "boolean"
                 },
                 "createTime": {
@@ -1129,7 +1143,7 @@
                     "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`.",
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
                     "type": "boolean"
                 },
                 "createTime": {
@@ -1300,7 +1314,7 @@
                     "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`.",
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
                     "type": "boolean"
                 },
                 "createTime": {
@@ -1686,10 +1700,6 @@
                     "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"
@@ -1974,6 +1984,10 @@
             "description": "The location of the function source code.",
             "id": "Source",
             "properties": {
+                "gitUri": {
+                    "description": "If provided, get the source from GitHub repository. This option is valid only for GCF 1st Gen function. Example: https://github.com///blob//",
+                    "type": "string"
+                },
                 "repoSource": {
                     "$ref": "RepoSource",
                     "description": "If provided, get the source from this location in a Cloud Source Repository."
@@ -1989,6 +2003,10 @@
             "description": "Provenance of the source. Ways to find the original source, or verify that some source was used for this build.",
             "id": "SourceProvenance",
             "properties": {
+                "gitUri": {
+                    "description": "A copy of the build's `source.git_uri`, if exists, with any commits resolved.",
+                    "type": "string"
+                },
                 "resolvedRepoSource": {
                     "$ref": "RepoSource",
                     "description": "A copy of the build's `source.repo_source`, if exists, with any revisions resolved."
@@ -2075,9 +2093,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Functions API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudidentity__v1.json b/discovery/googleapis/cloudidentity__v1.json
index a8f05f2..3663c6d 100644
--- a/discovery/googleapis/cloudidentity__v1.json
+++ b/discovery/googleapis/cloudidentity__v1.json
@@ -39,6 +39,13 @@
     "name": "cloudidentity",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230703",
+    "rootUrl": "https://cloudidentity.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Identity API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -116,7 +123,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "customers": {
             "resources": {
@@ -1499,7 +1505,12 @@
                             "path": "v1/{+parent}/memberships:searchDirectGroups",
                             "response": {
                                 "$ref": "SearchDirectGroupsResponse"
-                            }
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-identity.groups",
+                                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
                         },
                         "searchTransitiveGroups": {
                             "description": "Search transitive groups of a member. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the member is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. A transitive group is any group that has a direct or indirect membership to the member. Actor must have view permissions all transitive groups.",
@@ -1983,8 +1994,6 @@
             }
         }
     },
-    "revision": "20230502",
-    "rootUrl": "https://cloudidentity.googleapis.com/",
     "schemas": {
         "AddIdpCredentialOperationMetadata": {
             "description": "LRO response metadata for InboundSamlSsoProfilesService.AddIdpCredential.",
@@ -2214,10 +2223,18 @@
             "description": "Resource representing the Android specific attributes of a Device.",
             "id": "GoogleAppsCloudidentityDevicesV1AndroidAttributes",
             "properties": {
+                "ctsProfileMatch": {
+                    "description": "Whether the device passes Android CTS compliance.",
+                    "type": "boolean"
+                },
                 "enabledUnknownSources": {
                     "description": "Whether applications from unknown sources can be installed on device.",
                     "type": "boolean"
                 },
+                "hasPotentiallyHarmfulApps": {
+                    "description": "Whether any potentially harmful apps were detected on the device.",
+                    "type": "boolean"
+                },
                 "ownerProfileAccount": {
                     "description": "Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.",
                     "type": "boolean"
@@ -2241,6 +2258,14 @@
                 "supportsWorkProfile": {
                     "description": "Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the \"Enforce Work Profile\" policy.",
                     "type": "boolean"
+                },
+                "verifiedBoot": {
+                    "description": "Whether Android verified boot status is GREEN.",
+                    "type": "boolean"
+                },
+                "verifyAppsEnabled": {
+                    "description": "Whether Google Play Protect Verify Apps is enabled.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2618,6 +2643,10 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "hostname": {
+                    "description": "Host name of the device.",
+                    "type": "string"
+                },
                 "imei": {
                     "description": "Output only. IMEI number of device if GSM device; empty otherwise.",
                     "readOnly": true,
@@ -3987,9 +4016,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Identity API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudkms__v1.json b/discovery/googleapis/cloudkms__v1.json
index 9c9ac02..ba8b6dc 100644
--- a/discovery/googleapis/cloudkms__v1.json
+++ b/discovery/googleapis/cloudkms__v1.json
@@ -27,6 +27,13 @@
     "name": "cloudkms",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230625",
+    "rootUrl": "https://cloudkms.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Key Management Service (KMS) API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -1520,6 +1526,64 @@
                                                         "https://www.googleapis.com/auth/cloudkms"
                                                     ]
                                                 },
+                                                "rawDecrypt": {
+                                                    "description": "Decrypts data that was originally encrypted using a raw cryptographic mechanism. The CryptoKey.purpose must be RAW_ENCRYPT_DECRYPT.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}:rawDecrypt",
+                                                    "httpMethod": "POST",
+                                                    "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.rawDecrypt",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. The resource name of the CryptoKeyVersion to use for decryption.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}:rawDecrypt",
+                                                    "request": {
+                                                        "$ref": "RawDecryptRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "RawDecryptResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform",
+                                                        "https://www.googleapis.com/auth/cloudkms"
+                                                    ]
+                                                },
+                                                "rawEncrypt": {
+                                                    "description": "Encrypts data using portable cryptographic primitives. Most users should choose Encrypt and Decrypt rather than their raw counterparts. The CryptoKey.purpose must be RAW_ENCRYPT_DECRYPT.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}:rawEncrypt",
+                                                    "httpMethod": "POST",
+                                                    "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.rawEncrypt",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. The resource name of the CryptoKeyVersion to use for encryption.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}:rawEncrypt",
+                                                    "request": {
+                                                        "$ref": "RawEncryptRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "RawEncryptResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform",
+                                                        "https://www.googleapis.com/auth/cloudkms"
+                                                    ]
+                                                },
                                                 "restore": {
                                                     "description": "Restore a CryptoKeyVersion in the DESTROY_SCHEDULED state. Upon restoration of the CryptoKeyVersion, state will be set to DISABLED, and destroy_time will be cleared.",
                                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}:restore",
@@ -1761,8 +1825,6 @@
             }
         }
     },
-    "revision": "20230504",
-    "rootUrl": "https://cloudkms.googleapis.com/",
     "schemas": {
         "AsymmetricDecryptRequest": {
             "description": "Request message for KeyManagementService.AsymmetricDecrypt.",
@@ -2100,6 +2162,7 @@
                         "ENCRYPT_DECRYPT",
                         "ASYMMETRIC_SIGN",
                         "ASYMMETRIC_DECRYPT",
+                        "RAW_ENCRYPT_DECRYPT",
                         "MAC"
                     ],
                     "enumDescriptions": [
@@ -2107,6 +2170,7 @@
                         "CryptoKeys with this purpose may be used with Encrypt and Decrypt.",
                         "CryptoKeys with this purpose may be used with AsymmetricSign and GetPublicKey.",
                         "CryptoKeys with this purpose may be used with AsymmetricDecrypt and GetPublicKey.",
+                        "CryptoKeys with this purpose may be used with RawEncrypt and RawDecrypt. This purpose is meant to be used for interoperable symmetric encryption and does not support automatic CryptoKey rotation.",
                         "CryptoKeys with this purpose may be used with MacSign."
                     ],
                     "type": "string"
@@ -2132,6 +2196,8 @@
                     "enum": [
                         "CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED",
                         "GOOGLE_SYMMETRIC_ENCRYPTION",
+                        "AES_128_GCM",
+                        "AES_256_GCM",
                         "RSA_SIGN_PSS_2048_SHA256",
                         "RSA_SIGN_PSS_3072_SHA256",
                         "RSA_SIGN_PSS_4096_SHA256",
@@ -2163,6 +2229,8 @@
                     "enumDescriptions": [
                         "Not specified.",
                         "Creates symmetric encryption keys.",
+                        "AES-GCM (Galois Counter Mode) using 128-bit keys.",
+                        "AES-GCM (Galois Counter Mode) using 256-bit keys.",
                         "RSASSA-PSS 2048 bit key with a SHA256 digest.",
                         "RSASSA-PSS 3072 bit key with a SHA256 digest.",
                         "RSASSA-PSS 4096 bit key with a SHA256 digest.",
@@ -2324,6 +2392,8 @@
                     "enum": [
                         "CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED",
                         "GOOGLE_SYMMETRIC_ENCRYPTION",
+                        "AES_128_GCM",
+                        "AES_256_GCM",
                         "RSA_SIGN_PSS_2048_SHA256",
                         "RSA_SIGN_PSS_3072_SHA256",
                         "RSA_SIGN_PSS_4096_SHA256",
@@ -2355,6 +2425,8 @@
                     "enumDescriptions": [
                         "Not specified.",
                         "Creates symmetric encryption keys.",
+                        "AES-GCM (Galois Counter Mode) using 128-bit keys.",
+                        "AES-GCM (Galois Counter Mode) using 256-bit keys.",
                         "RSASSA-PSS 2048 bit key with a SHA256 digest.",
                         "RSASSA-PSS 3072 bit key with a SHA256 digest.",
                         "RSASSA-PSS 4096 bit key with a SHA256 digest.",
@@ -2731,6 +2803,8 @@
                     "enum": [
                         "CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED",
                         "GOOGLE_SYMMETRIC_ENCRYPTION",
+                        "AES_128_GCM",
+                        "AES_256_GCM",
                         "RSA_SIGN_PSS_2048_SHA256",
                         "RSA_SIGN_PSS_3072_SHA256",
                         "RSA_SIGN_PSS_4096_SHA256",
@@ -2762,6 +2836,8 @@
                     "enumDescriptions": [
                         "Not specified.",
                         "Creates symmetric encryption keys.",
+                        "AES-GCM (Galois Counter Mode) using 128-bit keys.",
+                        "AES-GCM (Galois Counter Mode) using 256-bit keys.",
                         "RSASSA-PSS 2048 bit key with a SHA256 digest.",
                         "RSASSA-PSS 3072 bit key with a SHA256 digest.",
                         "RSASSA-PSS 4096 bit key with a SHA256 digest.",
@@ -3321,6 +3397,8 @@
                     "enum": [
                         "CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED",
                         "GOOGLE_SYMMETRIC_ENCRYPTION",
+                        "AES_128_GCM",
+                        "AES_256_GCM",
                         "RSA_SIGN_PSS_2048_SHA256",
                         "RSA_SIGN_PSS_3072_SHA256",
                         "RSA_SIGN_PSS_4096_SHA256",
@@ -3352,6 +3430,8 @@
                     "enumDescriptions": [
                         "Not specified.",
                         "Creates symmetric encryption keys.",
+                        "AES-GCM (Galois Counter Mode) using 128-bit keys.",
+                        "AES-GCM (Galois Counter Mode) using 256-bit keys.",
                         "RSASSA-PSS 2048 bit key with a SHA256 digest.",
                         "RSASSA-PSS 3072 bit key with a SHA256 digest.",
                         "RSASSA-PSS 4096 bit key with a SHA256 digest.",
@@ -3416,6 +3496,198 @@
             },
             "type": "object"
         },
+        "RawDecryptRequest": {
+            "description": "Request message for KeyManagementService.RawDecrypt.",
+            "id": "RawDecryptRequest",
+            "properties": {
+                "additionalAuthenticatedData": {
+                    "description": "Optional. Optional data that must match the data originally supplied in RawEncryptRequest.additional_authenticated_data.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "additionalAuthenticatedDataCrc32c": {
+                    "description": "Optional. An optional CRC32C checksum of the RawDecryptRequest.additional_authenticated_data. If specified, KeyManagementService will verify the integrity of the received additional_authenticated_data using this checksum. KeyManagementService will report an error if the checksum verification fails. If you receive a checksum error, your client should verify that CRC32C(additional_authenticated_data) is equal to additional_authenticated_data_crc32c, and if so, perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "ciphertext": {
+                    "description": "Required. The encrypted data originally returned in RawEncryptResponse.ciphertext.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "ciphertextCrc32c": {
+                    "description": "Optional. An optional CRC32C checksum of the RawDecryptRequest.ciphertext. If specified, KeyManagementService will verify the integrity of the received ciphertext using this checksum. KeyManagementService will report an error if the checksum verification fails. If you receive a checksum error, your client should verify that CRC32C(ciphertext) is equal to ciphertext_crc32c, and if so, perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "initializationVector": {
+                    "description": "Required. The initialization vector (IV) used during encryption, which must match the data originally provided in RawEncryptResponse.initialization_vector.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "initializationVectorCrc32c": {
+                    "description": "Optional. An optional CRC32C checksum of the RawDecryptRequest.initialization_vector. If specified, KeyManagementService will verify the integrity of the received initialization_vector using this checksum. KeyManagementService will report an error if the checksum verification fails. If you receive a checksum error, your client should verify that CRC32C(initialization_vector) is equal to initialization_vector_crc32c, and if so, perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "tagLength": {
+                    "description": "The length of the authentication tag that is appended to the end of the ciphertext. If unspecified (0), the default value for the key's algorithm will be used (for AES-GCM, the default value is 16).",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "RawDecryptResponse": {
+            "description": "Response message for KeyManagementService.RawDecrypt.",
+            "id": "RawDecryptResponse",
+            "properties": {
+                "plaintext": {
+                    "description": "The decrypted data.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "plaintextCrc32c": {
+                    "description": "Integrity verification field. A CRC32C checksum of the returned RawDecryptResponse.plaintext. An integrity check of plaintext can be performed by computing the CRC32C checksum of plaintext and comparing your results to this field. Discard the response in case of non-matching checksum values, and perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: receiving this response message indicates that KeyManagementService is able to successfully decrypt the ciphertext. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "protectionLevel": {
+                    "description": "The ProtectionLevel of the CryptoKeyVersion used in decryption.",
+                    "enum": [
+                        "PROTECTION_LEVEL_UNSPECIFIED",
+                        "SOFTWARE",
+                        "HSM",
+                        "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 in an EKM-over-VPC backend."
+                    ],
+                    "type": "string"
+                },
+                "verifiedAdditionalAuthenticatedDataCrc32c": {
+                    "description": "Integrity verification field. A flag indicating whether RawDecryptRequest.additional_authenticated_data_crc32c was received by KeyManagementService and used for the integrity verification of additional_authenticated_data. A false value of this field indicates either that // RawDecryptRequest.additional_authenticated_data_crc32c was left unset or that it was not delivered to KeyManagementService. If you've set RawDecryptRequest.additional_authenticated_data_crc32c but this field is still false, discard the response and perform a limited number of retries.",
+                    "type": "boolean"
+                },
+                "verifiedCiphertextCrc32c": {
+                    "description": "Integrity verification field. A flag indicating whether RawDecryptRequest.ciphertext_crc32c was received by KeyManagementService and used for the integrity verification of the ciphertext. A false value of this field indicates either that RawDecryptRequest.ciphertext_crc32c was left unset or that it was not delivered to KeyManagementService. If you've set RawDecryptRequest.ciphertext_crc32c but this field is still false, discard the response and perform a limited number of retries.",
+                    "type": "boolean"
+                },
+                "verifiedInitializationVectorCrc32c": {
+                    "description": "Integrity verification field. A flag indicating whether RawDecryptRequest.initialization_vector_crc32c was received by KeyManagementService and used for the integrity verification of initialization_vector. A false value of this field indicates either that RawDecryptRequest.initialization_vector_crc32c was left unset or that it was not delivered to KeyManagementService. If you've set RawDecryptRequest.initialization_vector_crc32c but this field is still false, discard the response and perform a limited number of retries.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "RawEncryptRequest": {
+            "description": "Request message for KeyManagementService.RawEncrypt.",
+            "id": "RawEncryptRequest",
+            "properties": {
+                "additionalAuthenticatedData": {
+                    "description": "Optional. Optional data that, if specified, must also be provided during decryption through RawDecryptRequest.additional_authenticated_data. This field may only be used in conjunction with an algorithm that accepts additional authenticated data (for example, AES-GCM). The maximum size depends on the key version's protection_level. For SOFTWARE keys, the plaintext must be no larger than 64KiB. For HSM keys, the combined length of the plaintext and additional_authenticated_data fields must be no larger than 8KiB.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "additionalAuthenticatedDataCrc32c": {
+                    "description": "Optional. An optional CRC32C checksum of the RawEncryptRequest.additional_authenticated_data. If specified, KeyManagementService will verify the integrity of the received additional_authenticated_data using this checksum. KeyManagementService will report an error if the checksum verification fails. If you receive a checksum error, your client should verify that CRC32C(additional_authenticated_data) is equal to additional_authenticated_data_crc32c, and if so, perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "initializationVector": {
+                    "description": "Optional. A customer-supplied initialization vector that will be used for encryption. If it is not provided for AES-CBC and AES-CTR, one will be generated. It will be returned in RawEncryptResponse.initialization_vector.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "initializationVectorCrc32c": {
+                    "description": "Optional. An optional CRC32C checksum of the RawEncryptRequest.initialization_vector. If specified, KeyManagementService will verify the integrity of the received initialization_vector using this checksum. KeyManagementService will report an error if the checksum verification fails. If you receive a checksum error, your client should verify that CRC32C(initialization_vector) is equal to initialization_vector_crc32c, and if so, perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "plaintext": {
+                    "description": "Required. The data to encrypt. Must be no larger than 64KiB. The maximum size depends on the key version's protection_level. For SOFTWARE keys, the plaintext must be no larger than 64KiB. For HSM keys, the combined length of the plaintext and additional_authenticated_data fields must be no larger than 8KiB.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "plaintextCrc32c": {
+                    "description": "Optional. An optional CRC32C checksum of the RawEncryptRequest.plaintext. If specified, KeyManagementService will verify the integrity of the received plaintext using this checksum. KeyManagementService will report an error if the checksum verification fails. If you receive a checksum error, your client should verify that CRC32C(plaintext) is equal to plaintext_crc32c, and if so, perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RawEncryptResponse": {
+            "description": "Response message for KeyManagementService.RawEncrypt.",
+            "id": "RawEncryptResponse",
+            "properties": {
+                "ciphertext": {
+                    "description": "The encrypted data. In the case of AES-GCM, the authentication tag is the tag_length bytes at the end of this field.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "ciphertextCrc32c": {
+                    "description": "Integrity verification field. A CRC32C checksum of the returned RawEncryptResponse.ciphertext. An integrity check of ciphertext can be performed by computing the CRC32C checksum of ciphertext and comparing your results to this field. Discard the response in case of non-matching checksum values, and perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "initializationVector": {
+                    "description": "The initialization vector (IV) generated by the service during encryption. This value must be stored and provided in RawDecryptRequest.initialization_vector at decryption time.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "initializationVectorCrc32c": {
+                    "description": "Integrity verification field. A CRC32C checksum of the returned RawEncryptResponse.initialization_vector. An integrity check of initialization_vector can be performed by computing the CRC32C checksum of initialization_vector and comparing your results to this field. Discard the response in case of non-matching checksum values, and perform a limited number of retries. A persistent mismatch may indicate an issue in your computation of the CRC32C checksum. Note: This field is defined as int64 for reasons of compatibility across different languages. However, it is a non-negative integer, which will never exceed 2^32-1, and can be safely downconverted to uint32 in languages that support this type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The resource name of the CryptoKeyVersion used in encryption. Check this field to verify that the intended resource was used for encryption.",
+                    "type": "string"
+                },
+                "protectionLevel": {
+                    "description": "The ProtectionLevel of the CryptoKeyVersion used in encryption.",
+                    "enum": [
+                        "PROTECTION_LEVEL_UNSPECIFIED",
+                        "SOFTWARE",
+                        "HSM",
+                        "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 in an EKM-over-VPC backend."
+                    ],
+                    "type": "string"
+                },
+                "tagLength": {
+                    "description": "The length of the authentication tag that is appended to the end of the ciphertext.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "verifiedAdditionalAuthenticatedDataCrc32c": {
+                    "description": "Integrity verification field. A flag indicating whether RawEncryptRequest.additional_authenticated_data_crc32c was received by KeyManagementService and used for the integrity verification of additional_authenticated_data. A false value of this field indicates either that // RawEncryptRequest.additional_authenticated_data_crc32c was left unset or that it was not delivered to KeyManagementService. If you've set RawEncryptRequest.additional_authenticated_data_crc32c but this field is still false, discard the response and perform a limited number of retries.",
+                    "type": "boolean"
+                },
+                "verifiedInitializationVectorCrc32c": {
+                    "description": "Integrity verification field. A flag indicating whether RawEncryptRequest.initialization_vector_crc32c was received by KeyManagementService and used for the integrity verification of initialization_vector. A false value of this field indicates either that RawEncryptRequest.initialization_vector_crc32c was left unset or that it was not delivered to KeyManagementService. If you've set RawEncryptRequest.initialization_vector_crc32c but this field is still false, discard the response and perform a limited number of retries.",
+                    "type": "boolean"
+                },
+                "verifiedPlaintextCrc32c": {
+                    "description": "Integrity verification field. A flag indicating whether RawEncryptRequest.plaintext_crc32c was received by KeyManagementService and used for the integrity verification of the plaintext. A false value of this field indicates either that RawEncryptRequest.plaintext_crc32c was left unset or that it was not delivered to KeyManagementService. If you've set RawEncryptRequest.plaintext_crc32c but this field is still false, discard the response and perform a limited number of retries.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "RestoreCryptoKeyVersionRequest": {
             "description": "Request message for KeyManagementService.RestoreCryptoKeyVersion.",
             "id": "RestoreCryptoKeyVersionRequest",
@@ -3520,9 +3792,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Key Management Service (KMS) API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudprofiler__v2.json b/discovery/googleapis/cloudprofiler__v2.json
index fd7e20e..82bc827 100644
--- a/discovery/googleapis/cloudprofiler__v2.json
+++ b/discovery/googleapis/cloudprofiler__v2.json
@@ -30,6 +30,13 @@
     "name": "cloudprofiler",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230612",
+    "rootUrl": "https://cloudprofiler.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Profiler API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -107,7 +114,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -214,8 +220,6 @@
             }
         }
     },
-    "revision": "20230507",
-    "rootUrl": "https://cloudprofiler.googleapis.com/",
     "schemas": {
         "CreateProfileRequest": {
             "description": "CreateProfileRequest describes a profile resource online creation request. The deployment field must be populated. The profile_type specifies the list of profile types supported by the agent. The creation call will hang until a profile of one of these types needs to be collected. ",
@@ -334,9 +338,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Profiler API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudresourcemanager__v1.json b/discovery/googleapis/cloudresourcemanager__v1.json
index fb330a5..d894612 100644
--- a/discovery/googleapis/cloudresourcemanager__v1.json
+++ b/discovery/googleapis/cloudresourcemanager__v1.json
@@ -27,6 +27,12 @@
     "name": "cloudresourcemanager",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230709",
+    "rootUrl": "https://cloudresourcemanager.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Resource Manager API",
+    "version": "v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +110,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "folders": {
             "methods": {
@@ -1169,8 +1174,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://cloudresourcemanager.googleapis.com/",
     "schemas": {
         "Ancestor": {
             "description": "Identifying information for a single ancestor of a project.",
@@ -2285,8 +2288,5 @@
             "properties": {},
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Resource Manager API",
-    "version": "v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudresourcemanager__v2.json b/discovery/googleapis/cloudresourcemanager__v2.json
index adfb73b..d1bdae9 100644
--- a/discovery/googleapis/cloudresourcemanager__v2.json
+++ b/discovery/googleapis/cloudresourcemanager__v2.json
@@ -27,6 +27,12 @@
     "name": "cloudresourcemanager",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230709",
+    "rootUrl": "https://cloudresourcemanager.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Resource Manager API",
+    "version": "v2",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +110,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "folders": {
             "methods": {
@@ -448,8 +453,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://cloudresourcemanager.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.",
@@ -1128,8 +1131,5 @@
             "properties": {},
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Resource Manager API",
-    "version": "v2"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudresourcemanager__v3.json b/discovery/googleapis/cloudresourcemanager__v3.json
index 276fc68..b971d9a 100644
--- a/discovery/googleapis/cloudresourcemanager__v3.json
+++ b/discovery/googleapis/cloudresourcemanager__v3.json
@@ -27,6 +27,13 @@
     "name": "cloudresourcemanager",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230709",
+    "rootUrl": "https://cloudresourcemanager.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Resource Manager API",
+    "version": "v3",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "effectiveTags": {
             "methods": {
@@ -1580,7 +1586,7 @@
                             "type": "string"
                         },
                         "parent": {
-                            "description": "Required.",
+                            "description": "Required. Resource name for the parent of the TagValues to be listed, in the format `tagKeys/123` or `tagValues/123`.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1803,8 +1809,6 @@
             }
         }
     },
-    "revision": "20230514",
-    "rootUrl": "https://cloudresourcemanager.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.",
@@ -3020,9 +3024,5 @@
             "properties": {},
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Resource Manager API",
-    "version": "v3",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudscheduler__v1.json b/discovery/googleapis/cloudscheduler__v1.json
index ac9ea57..d10887d 100644
--- a/discovery/googleapis/cloudscheduler__v1.json
+++ b/discovery/googleapis/cloudscheduler__v1.json
@@ -24,6 +24,13 @@
     "name": "cloudscheduler",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230630",
+    "rootUrl": "https://cloudscheduler.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Scheduler API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -416,8 +422,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://cloudscheduler.googleapis.com/",
     "schemas": {
         "AppEngineHttpTarget": {
             "description": "App Engine target. The job will be pushed to a job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. Error 503 is considered an App Engine system error instead of an application error. Requests returning error 503 will be retried regardless of retry configuration and not counted against retry counts. Any other response code, or a failure to receive a response before the deadline, constitutes a failed attempt.",
@@ -578,6 +582,7 @@
                 "lastAttemptTime": {
                     "description": "Output only. The time the last job attempt started.",
                     "format": "google-datetime",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "name": {
@@ -599,6 +604,7 @@
                 "scheduleTime": {
                     "description": "Output only. The next time the job is scheduled. Note that this may be a retry of a previously failed attempt or the next execution time according to the schedule.",
                     "format": "google-datetime",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "state": {
@@ -617,11 +623,13 @@
                         "The job is disabled by the system due to error. The user cannot directly set a job to be disabled.",
                         "The job state resulting from a failed CloudScheduler.UpdateJob operation. To recover a job from this state, retry CloudScheduler.UpdateJob until a successful response is received."
                     ],
+                    "readOnly": true,
                     "type": "string"
                 },
                 "status": {
                     "$ref": "Status",
-                    "description": "Output only. The response from the target for the last attempted execution."
+                    "description": "Output only. The response from the target for the last attempted execution.",
+                    "readOnly": true
                 },
                 "timeZone": {
                     "description": "Specifies the time zone to be used in interpreting schedule. The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database). Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT).",
@@ -630,6 +638,7 @@
                 "userUpdateTime": {
                     "description": "Output only. The creation time of the job.",
                     "format": "google-datetime",
+                    "readOnly": true,
                     "type": "string"
                 }
             },
@@ -749,24 +758,24 @@
                     "additionalProperties": {
                         "type": "string"
                     },
-                    "description": "Attributes for this message. If this field is empty, the message must contain non-empty data. This can be used to filter messages on the subscription.",
+                    "description": "Optional. Attributes for this message. If this field is empty, the message must contain non-empty data. This can be used to filter messages on the subscription.",
                     "type": "object"
                 },
                 "data": {
-                    "description": "The message data field. If this field is empty, the message must contain at least one attribute.",
+                    "description": "Optional. The message data field. If this field is empty, the message must contain at least one attribute.",
                     "format": "byte",
                     "type": "string"
                 },
                 "messageId": {
-                    "description": "ID of this message, assigned by the server when the message is published. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a `PubsubMessage` via a `Pull` call or a push delivery. It must not be populated by the publisher in a `Publish` call.",
+                    "description": "Optional. ID of this message, assigned by the server when the message is published. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a `PubsubMessage` via a `Pull` call or a push delivery. It must not be populated by the publisher in a `Publish` call.",
                     "type": "string"
                 },
                 "orderingKey": {
-                    "description": "If non-empty, identifies related messages for which publish order should be respected. If a `Subscription` has `enable_message_ordering` set to `true`, messages published with the same non-empty `ordering_key` value will be delivered to subscribers in the order in which they are received by the Pub/Sub system. All `PubsubMessage`s published in a given `PublishRequest` must specify the same `ordering_key` value. For more information, see [ordering messages](https://cloud.google.com/pubsub/docs/ordering).",
+                    "description": "Optional. If non-empty, identifies related messages for which publish order should be respected. If a `Subscription` has `enable_message_ordering` set to `true`, messages published with the same non-empty `ordering_key` value will be delivered to subscribers in the order in which they are received by the Pub/Sub system. All `PubsubMessage`s published in a given `PublishRequest` must specify the same `ordering_key` value. For more information, see [ordering messages](https://cloud.google.com/pubsub/docs/ordering).",
                     "type": "string"
                 },
                 "publishTime": {
-                    "description": "The time at which the message was published, populated by the server when it receives the `Publish` call. It must not be populated by the publisher in a `Publish` call.",
+                    "description": "Optional. The time at which the message was published, populated by the server when it receives the `Publish` call. It must not be populated by the publisher in a `Publish` call.",
                     "format": "google-datetime",
                     "type": "string"
                 }
@@ -867,9 +876,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Scheduler API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudsearch__v1.json b/discovery/googleapis/cloudsearch__v1.json
index e4fd808..55dbd82 100644
--- a/discovery/googleapis/cloudsearch__v1.json
+++ b/discovery/googleapis/cloudsearch__v1.json
@@ -48,6 +48,13 @@
     "name": "cloudsearch",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230705",
+    "rootUrl": "https://cloudsearch.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Search API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -125,7 +132,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "debug": {
             "resources": {
@@ -935,6 +941,25 @@
         },
         "query": {
             "methods": {
+                "removeActivity": {
+                    "description": "Provides functionality to remove logged activity for a user. Currently to be used only for Chat 1p clients **Note:** This API requires a standard end user account to execute. A service account can't perform Remove Activity requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).",
+                    "flatPath": "v1/query:removeActivity",
+                    "httpMethod": "POST",
+                    "id": "cloudsearch.query.removeActivity",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/query:removeActivity",
+                    "request": {
+                        "$ref": "RemoveActivityRequest"
+                    },
+                    "response": {
+                        "$ref": "RemoveActivityResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud_search",
+                        "https://www.googleapis.com/auth/cloud_search.query"
+                    ]
+                },
                 "search": {
                     "description": "The Cloud Search Query API provides the search method, which returns the most relevant results from a user query. The results can come from Google Workspace apps, such as Gmail or Google Drive, or they can come from data that you have indexed from a third party. **Note:** This API requires a standard end user account to execute. A service account can't perform Query API requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).",
                     "flatPath": "v1/query/search",
@@ -995,7 +1020,7 @@
                                     "type": "boolean"
                                 },
                                 "requestOptions.languageCode": {
-                                    "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. For translations. Set this field using the language set in browser or for the page. In the event that the user's language preference is known, set this field to the known user language. When specified, the documents in search results are biased towards the specified language. From Suggest API perspective, for 3p suggest this is used as a hint while making predictions to add language boosting.",
+                                    "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. For translations. Set this field using the language set in browser or for the page. In the event that the user's language preference is known, set this field to the known user language. When specified, the documents in search results are biased towards the specified language. The Suggest API uses this field as a hint to make better third-party autocomplete predictions.",
                                     "location": "query",
                                     "type": "string"
                                 },
@@ -2075,3558 +2100,17 @@
             }
         }
     },
-    "revision": "20230510",
-    "rootUrl": "https://cloudsearch.googleapis.com/",
     "schemas": {
-        "AbuseReportingConfig": {
-            "description": "Abuse reporting configuration outlining what is supported in this conference.",
-            "id": "AbuseReportingConfig",
+        "Action": {
+            "id": "Action",
             "properties": {
-                "recordingAllowed": {
-                    "description": "Whether the current call may include video recordings in its abuse reports.",
-                    "type": "boolean"
-                },
-                "writtenUgcAllowed": {
-                    "description": "Whether the current call may include user generated content (chat, polls, Q&A...) in its abuse reports.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AckInfo": {
-            "description": "Information about how devices in a meeting have acked for a session/operation.",
-            "id": "AckInfo",
-            "properties": {
-                "unackedDeviceCount": {
-                    "description": "Output only. Number of meeting devices that have not acked yet.",
-                    "format": "int32",
-                    "readOnly": true,
-                    "type": "integer"
-                },
-                "unackedDeviceIds": {
-                    "description": "Output only. IDs of meeting devices (at most ten are provided) that have not acked yet.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AclFixRequest": {
-            "description": "The request set by clients to instruct Backend how the user intend to fix the ACL. Technically it's not a request to ACL Fixer, because Backend uses /DriveService.Share to modify Drive ACLs.",
-            "id": "AclFixRequest",
-            "properties": {
-                "recipientEmails": {
-                    "description": "For Spaces messages: This field is ignored. For DMs messages: The list of email addresses that should be added to the Drive item's ACL. In general, the list should not be empty when the boolean \"should_fix\" field is set; otherwise, the list should be empty. During transition - when clients do not specify this field but the \"should_fix\" is true, we follow the legacy behavior: share to all users in the DM regardless of emails. This behavior is being phased out.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "role": {
-                    "enum": [
-                        "UNKNOWN",
-                        "READER",
-                        "COMMENTER",
-                        "WRITER"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "shouldFix": {
-                    "description": "Whether to attempt to fix the ACL by adding the room or DM members to the Drive file's ACL.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AclFixStatus": {
-            "description": "The message reconstructed based on information in the response of /PermissionFixOptionsService.Query (or the Apiary API that wraps it). Indicates the ability of the requester to change the access to the Drive file for the room roster or the DM members. Used in GetMessagePreviewMetadataResponse only.",
-            "id": "AclFixStatus",
-            "properties": {
-                "fixability": {
-                    "enum": [
-                        "UNKNOWN",
-                        "ALREADY_ACCESSIBLE",
-                        "CAN_FIX",
-                        "CANNOT_FIX",
-                        "ACL_FIXER_ERROR"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "fixableEmailAddress": {
-                    "description": "List of recipient email addresses for which access can be granted. This field contains the same email addresses from the GetMessagePreviewMetadata request if all recipients can be successfully added to the ACL as determined by Drive ACL Fixer. For now, the field is non-empty if and only if the \"fixability\" value is \"CAN_FIX\".",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "outOfDomainWarningEmailAddress": {
-                    "description": "List of recipient email addresses for which an out-of-domain-sharing warning must be shown, stating that these email addresses are not in the Google Apps organization that the requested item belong to. Empty if all recipients are in the same Google Apps organization.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "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"
-        },
-        "ActionParameter": {
-            "description": "List of string parameters that developers can specify when the above action method (in apps script) is invoked. An example use case is for 3 snooze buttons: snooze now, snooze 1 day, snooze next week. Developers can have action method = snooze() and pass the snooze type and snooze time in list of string parameters.",
-            "id": "ActionParameter",
-            "properties": {
-                "key": {
-                    "type": "string"
-                },
-                "value": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AddOnFrameStartingState": {
-            "description": "Starting state for an individual add-on frame.",
-            "id": "AddOnFrameStartingState",
-            "properties": {
-                "additionalData": {
-                    "description": "Additional data internal to the add-on that can be used to initialize itself.",
-                    "type": "string"
-                },
-                "uri": {
-                    "description": "The uri of the artifact being used for an add-on co-activity.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AddOnStartingState": {
-            "description": "Starting state properties for add-on co-activity.",
-            "id": "AddOnStartingState",
-            "properties": {
-                "addOnFrameStartingStates": {
-                    "additionalProperties": {
-                        "$ref": "AddOnFrameStartingState"
-                    },
-                    "description": "List of starting state frames for the add-on co-activity. Keys for this map are the values of the AddOnFrameType enum.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "AddonComposeUiActionMarkup": {
-            "id": "AddonComposeUiActionMarkup",
-            "properties": {
-                "type": {
-                    "enum": [
-                        "UNSPECIFIED",
-                        "DISMISS"
-                    ],
-                    "enumDescriptions": [
-                        "Default. When unspecified, no action is taken.",
-                        "Dismisses the add-on compose UI."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AffectedMembership": {
-            "description": "Earlier we used to populate just the affected_members list and inferred the new membership state (roles didn't exist back then) from the Type. go/dynamite-finra required backend to know the previous membership state to reconstruct membership history. The proper solution involved cleaning up up Type enum, but it was used in many, many places. This was added as a stop-gap solution to unblock FINRA without breaking everything. Later role update and target audience update started relying on this to communicate information to clients about what transition happened. So this is now required to be populated and should be in sync with affected_members for new messages.",
-            "id": "AffectedMembership",
-            "properties": {
-                "affectedMember": {
-                    "$ref": "MemberId"
-                },
-                "priorMembershipRole": {
-                    "enum": [
-                        "ROLE_UNKNOWN",
-                        "ROLE_NONE",
-                        "ROLE_INVITEE",
-                        "ROLE_MEMBER",
-                        "ROLE_OWNER"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "This role is used when a user is forcibly removed from a room by another user. They will no longer be able to search for the room, but their history will be retained.",
-                        "This role is used for two purposes. 1. A group is invited to a room, making it discoverable for its members. 2. A user was part of a room, but willingly left the room.",
-                        "--- Following roles are for joined members of a roster. --- Default role for any joined user. Has basic capabilities within a room.",
-                        "Role assigned to room creators and explicitly promoted members. Has broad powers to manage the room."
-                    ],
-                    "type": "string"
-                },
-                "priorMembershipState": {
-                    "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"
-                },
-                "targetMembershipRole": {
-                    "enum": [
-                        "ROLE_UNKNOWN",
-                        "ROLE_NONE",
-                        "ROLE_INVITEE",
-                        "ROLE_MEMBER",
-                        "ROLE_OWNER"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "This role is used when a user is forcibly removed from a room by another user. They will no longer be able to search for the room, but their history will be retained.",
-                        "This role is used for two purposes. 1. A group is invited to a room, making it discoverable for its members. 2. A user was part of a room, but willingly left the room.",
-                        "--- Following roles are for joined members of a roster. --- Default role for any joined user. Has basic capabilities within a room.",
-                        "Role assigned to room creators and explicitly promoted members. Has broad powers to manage the room."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AllAuthenticatedUsersProto": {
-            "description": "Represents a principal who has authenticated as any kind of user which the application understands. This is typically used for \"wiki-like\" security, where anyone is allowed access so long as they can be held accountable for that access. Since the purpose is knowing whom to blame, it is up to the application to decide what kinds of users it knows how to blame. For example, an application might choose to include GAIA users in \"all authenticated users\", but not include MDB users. Nothing here.",
-            "id": "AllAuthenticatedUsersProto",
-            "properties": {},
-            "type": "object"
-        },
-        "Annotation": {
-            "description": "NOTE WHEN ADDING NEW PROTO FIELDS: Be sure to add datapol annotations to new fields with potential PII, so they get scrubbed when logging protos for errors. NEXT TAG: 32",
-            "id": "Annotation",
-            "properties": {
-                "babelPlaceholderMetadata": {
-                    "$ref": "BabelPlaceholderMetadata"
-                },
-                "cardCapabilityMetadata": {
-                    "$ref": "CardCapabilityMetadata",
-                    "description": "LINT.ThenChange(//depot/google3/java/com/google/apps/dynamite/v1/backend/action/common/SystemMessageHelper.java)"
-                },
-                "chipRenderType": {
-                    "description": "Whether the annotation should be rendered as a preview chip. If this is missing or unspecified, fallback to should_not_render on the metadata.",
-                    "enum": [
-                        "CHIP_RENDER_TYPE_UNSPECIFIED",
-                        "RENDER",
-                        "RENDER_IF_POSSIBLE",
-                        "DO_NOT_RENDER"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Clients must render the annotation as a preview chip, and if they cannot render this many Annotations, show a fallback card.",
-                        "Client can render the annotation if it has room to render it.",
-                        "Client should not render the annotation as a preview chip."
-                    ],
-                    "type": "string"
-                },
-                "componentSearchInfo": {
-                    "$ref": "AppsDynamiteSharedMessageComponentSearchInfo",
-                    "description": "Contains additional metadata that further enhances the annotation when it is returned as part of search response. For example, this can be used to define how the annotation matches the search. Information can be used to highlight in rendering search results. The following are the different annotation text fields that can be highlighted by this field: 1. DriveMetadata.title 2. UploadMetadata.content_name 3. GsuiteIntegrationMetadata.TasksMessageIntegrationRenderData.title 4. GsuiteIntegrationMetadata.CalendarEventAnnotationData.title"
-                },
-                "consentedAppUnfurlMetadata": {
-                    "$ref": "ConsentedAppUnfurlMetadata"
-                },
-                "customEmojiMetadata": {
-                    "$ref": "CustomEmojiMetadata"
-                },
-                "dataLossPreventionMetadata": {
-                    "$ref": "DataLossPreventionMetadata"
-                },
-                "driveMetadata": {
-                    "$ref": "DriveMetadata",
-                    "description": "Chip annotations"
-                },
-                "formatMetadata": {
-                    "$ref": "FormatMetadata"
-                },
-                "groupRetentionSettingsUpdated": {
-                    "$ref": "GroupRetentionSettingsUpdatedMetaData"
-                },
-                "gsuiteIntegrationMetadata": {
-                    "$ref": "GsuiteIntegrationMetadata",
-                    "description": "Metadata for 1P integrations like tasks, calendar. These are supported only through integration server as 1P integrations use the integration API (which in turn uses backend API with special permissions) to post messages. Clients should never set this. LINT.IfChange"
-                },
-                "incomingWebhookChangedMetadata": {
-                    "$ref": "IncomingWebhookChangedMetadata"
-                },
-                "inlineRenderFormat": {
-                    "description": "The inline render format of this annotation. go/drive-smart-chips-chat-v2.",
-                    "enum": [
-                        "INLINE_RENDER_FORMAT_UNSPECIFIED",
-                        "SMART_CHIP"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "integrationConfigUpdated": {
-                    "$ref": "IntegrationConfigUpdatedMetadata",
-                    "description": "LINT.ThenChange(//depot/google3/java/com/google/apps/dynamite/v1/backend/action/common/SystemMessageHelper.java)"
-                },
-                "interactionData": {
-                    "$ref": "InteractionData",
-                    "description": "Additional interaction data for this annotation."
-                },
-                "length": {
-                    "description": "Length of the text_body substring beginning from start_index the Annotation corresponds to.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "localId": {
-                    "description": "* A client-assigned ID for this annotation. This is helpful in matching the back-filled annotations to the original annotations on client side, without having to re-parse the message. There is no guarantee an annotation has a local_id, it's a purely client used and controlled field with no guarantee of uniqueness.",
-                    "type": "string"
-                },
-                "membershipChanged": {
-                    "$ref": "MembershipChangedMetadata",
-                    "description": "Metadata for system messages. Clients should never set this. LINT.IfChange"
-                },
-                "readReceiptsSettingsMetadata": {
-                    "$ref": "ReadReceiptsSettingsUpdatedMetadata"
-                },
-                "requiredMessageFeaturesMetadata": {
-                    "$ref": "RequiredMessageFeaturesMetadata",
-                    "description": "Metadata that defines all of the required features that must be rendered in the message. Clients can use this to see whether they support the entire message, or show a fallback chip otherwise. See go/message-quoting-client-to-server for details. LINT.ThenChange( //depot/google3/java/com/google/apps/dynamite/v1/allshared/parser/AnnotationSanitizer.java, //depot/google3/java/com/google/apps/dynamite/v1/backend/action/common/SystemMessageHelper.java, //depot/google3/java/com/google/caribou/eli/mediation/chat/AnnotationConverter.java )"
-                },
-                "roomUpdated": {
-                    "$ref": "RoomUpdatedMetadata"
-                },
-                "serverInvalidated": {
-                    "description": "Whether or not the annotation is invalidated by the server. Example of situations for invalidation include: when the URL is malformed, or when Drive item ID is rejected by Drive Service.",
-                    "type": "boolean"
-                },
-                "slashCommandMetadata": {
-                    "$ref": "SlashCommandMetadata"
-                },
-                "startIndex": {
-                    "description": "Start index (0-indexed) of the Message text the Annotation corresponds to, inclusive.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "type": {
-                    "description": "Type of the Annotation.",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "URL",
-                        "DRIVE_FILE",
-                        "DRIVE_DOC",
-                        "DRIVE_SHEET",
-                        "DRIVE_SLIDE",
-                        "DRIVE_FORM",
-                        "USER_MENTION",
-                        "SLASH_COMMAND",
-                        "CONSENTED_APP_UNFURL",
-                        "VIDEO",
-                        "FORMAT_DATA",
-                        "IMAGE",
-                        "PDF",
-                        "VIDEO_CALL",
-                        "UPLOAD_METADATA",
-                        "GSUITE_INTEGRATION",
-                        "CUSTOM_EMOJI",
-                        "CARD_CAPABILITY",
-                        "DATA_LOSS_PREVENTION",
-                        "REQUIRED_MESSAGE_FEATURES_METADATA",
-                        "MEMBERSHIP_CHANGED",
-                        "ROOM_UPDATED",
-                        "GROUP_RETENTION_SETTINGS_UPDATED",
-                        "BABEL_PLACEHOLDER",
-                        "READ_RECEIPTS_SETTINGS_UPDATED",
-                        "INCOMING_WEBHOOK_CHANGED",
-                        "INTEGRATION_CONFIG_UPDATED",
-                        "INVITATION"
-                    ],
-                    "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
-                        "These can have overlaps, i.e. same message can have multiple of these. For example a Drive link to a PDF can have URL, DRIVE_FILE and PDF all set Links",
-                        "Any drive file",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Any video, not just youtube, the url decides how to play",
-                        "UI should not be concerned with FORMAT_DATA",
-                        "",
-                        "",
-                        "For Thor integration",
-                        "Blobstore uploads",
-                        "Generic annotation for gsuite integrations",
-                        "",
-                        "Card capability for in-stream widgets.",
-                        "",
-                        "Clients can use this to see whether they support the entire message, or show a fallback chip otherwise.",
-                        "Annotation types for system messages. Clients should never set this.",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Message-level annotations. First message of an invite. Should not be set by clients."
-                    ],
-                    "type": "string"
-                },
-                "uniqueId": {
-                    "description": "* A unique server-assigned ID for this annotation. This is helpful in matching annotation objects when fetched from service. All uploads should have a unique_id after the message they are attached to is successfully sent. Url annotations that originally were uploads (i.e. policy violations) will have a unique_id after the message they are attached to is successfully sent. No other url annotations should have a unique_id. All drive annotations should have a unique_id after the message they are attached to is successfully sent.",
-                    "type": "string"
-                },
-                "uploadMetadata": {
-                    "$ref": "UploadMetadata"
-                },
-                "urlMetadata": {
-                    "$ref": "UrlMetadata"
-                },
-                "userMentionMetadata": {
-                    "$ref": "UserMentionMetadata",
-                    "description": "Metadata that clients can set for annotations. LINT.IfChange In-text annotations"
-                },
-                "videoCallMetadata": {
-                    "$ref": "VideoCallMetadata"
-                },
-                "youtubeMetadata": {
-                    "$ref": "YoutubeMetadata"
-                }
-            },
-            "type": "object"
-        },
-        "AnnotationInfo": {
-            "description": "Information about the screen annotation session.",
-            "id": "AnnotationInfo",
-            "properties": {
-                "coannotatorDeviceIds": {
-                    "description": "The device resource names of other devices which can annotate the screen.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "isActive": {
-                    "description": "Whether the annotation is active.",
-                    "type": "boolean"
-                }
-            },
-            "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",
-                        "ASSISTIVE_SUGGESTION_APP",
-                        "CONTACTS_APP",
-                        "ACTIVITY_FEED_APP",
-                        "DRIVE_APP",
-                        "CHAT_IN_MEET_APP",
-                        "SHORTCUT_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"
-        },
-        "AppsDynamiteSharedActivityFeedAnnotationData": {
-            "description": "Next Id: 7",
-            "id": "AppsDynamiteSharedActivityFeedAnnotationData",
-            "properties": {
-                "activityFeedMessageCreateTime": {
-                    "description": "Timestamp of when the Activity Feed message that contains this annotation was created. This is roughly when the activity happened, such as when a reaction happened, but will have at least some small delay, since the Activity Feed message is created asynchronously after. This timestamp should only be used for display when the activity create time is not available in the Chat UI, like the time of a reaction.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "activityFeedMessageId": {
-                    "$ref": "MessageId",
-                    "description": "Unique id of the Activity Feed message used by clients to implement click-to-source. This is the same messageId as the top-level id field for the Activity Feed item."
-                },
-                "chatItem": {
-                    "$ref": "AppsDynamiteSharedChatItem"
-                },
-                "sharedUserInfo": {
-                    "$ref": "UserInfo",
-                    "description": "Only populated on read path and should not be persisted in storage."
-                },
-                "userInfo": {
-                    "$ref": "AppsDynamiteSharedActivityFeedAnnotationDataUserInfo",
-                    "description": "Use shared_user_info instead."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedActivityFeedAnnotationDataUserInfo": {
-            "description": "UserId of the AF item updater to show and the updater count to show.",
-            "id": "AppsDynamiteSharedActivityFeedAnnotationDataUserInfo",
-            "properties": {
-                "updaterCountDisplayType": {
-                    "description": "Describes how updater_count_to_show should be used.",
-                    "enum": [
-                        "UPDATER_COUNT_DISPLAY_TYPE_UNSPECIFIED",
-                        "EXACT_COUNT",
-                        "NONZERO_COUNT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "A precise updater count is known and the value set in updater_count_to_show should be used.",
-                        "A precise updater count could not be calculated, but there is at least one. Any value set in updater_count_to_show should NOT be used."
-                    ],
-                    "type": "string"
-                },
-                "updaterCountToShow": {
-                    "description": "The number of updaters for clients to show, currently set to the total number of updaters minus the one set in updater_to_show.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "updaterToShow": {
-                    "$ref": "UserId",
-                    "description": "The updater for clients to show."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAppProfile": {
-            "description": "Optional field for apps overriding display info",
-            "id": "AppsDynamiteSharedAppProfile",
-            "properties": {
-                "avatarEmoji": {
-                    "description": "Displayed user avatar emoji.",
-                    "type": "string"
-                },
-                "avatarUrl": {
-                    "description": "Displayed user avatar url.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Displayed user name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAssistantAnnotationData": {
-            "description": "This is the internal version of the API proto at google3/google/chat/v1/gsuite_message_integration.proto Data used to render Assistant suggestions. See go/bullseye-rendering.",
-            "id": "AppsDynamiteSharedAssistantAnnotationData",
-            "properties": {
-                "suggestion": {
-                    "$ref": "AppsDynamiteSharedAssistantSuggestion",
-                    "description": "The suggestion to render in the card."
-                },
-                "unfulfillable": {
-                    "$ref": "AppsDynamiteSharedAssistantUnfulfillableRequest",
-                    "description": "Set when the initial query was unfulfillable. Only an on-demand unfulfillable query will result in a response (not a proactive query). 1. On-demand: user explicitly invokes the bot 2. Proactive: bot makes proactive suggestion (when available) by listening to all user messages."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAssistantDebugContext": {
-            "description": "Represents info regarding suggestion debug information.",
-            "id": "AppsDynamiteSharedAssistantDebugContext",
-            "properties": {
-                "query": {
-                    "description": "The query that triggered the resulting suggestion.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAssistantFeedbackContext": {
-            "description": "Data needed to render feedback on the Assistant card",
-            "id": "AppsDynamiteSharedAssistantFeedbackContext",
-            "properties": {
-                "feedbackChips": {
-                    "description": "Specifies a list of feedback chips to show",
-                    "items": {
-                        "$ref": "AppsDynamiteSharedAssistantFeedbackContextFeedbackChip"
-                    },
-                    "type": "array"
-                },
-                "thumbsFeedback": {
-                    "description": "Whether the thumbs feedback is provided",
-                    "enum": [
-                        "THUMBS_FEEDBACK_UNSPECIFIED",
-                        "NONE_SELECTED",
-                        "UP",
-                        "DOWN"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified thumbs state",
-                        "Thumbs are not selected",
-                        "Thumbs up selected",
-                        "Thumbs down selected"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAssistantFeedbackContextFeedbackChip": {
-            "description": "Suggestion chips for users to indicate positive or negative feedback",
-            "id": "AppsDynamiteSharedAssistantFeedbackContextFeedbackChip",
-            "properties": {
-                "feedbackChipType": {
-                    "description": "What type of chip to display",
-                    "enum": [
-                        "FEEDBACK_CHIP_TYPE_UNSPECIFIED",
-                        "WRONG_TRIGGER",
-                        "WRONG_FILE",
-                        "CORRECT_TRIGGER",
-                        "CORRECT_FILE",
-                        "DISRUPTIVE",
-                        "OTHER"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified type of feedback chip",
-                        "Bad/noisy triggering",
-                        "Incorrect files were presented",
-                        "The Assistant card triggered appropriately",
-                        "The correct files were presented",
-                        "The feature is disruptive",
-                        "Other reason"
-                    ],
-                    "type": "string"
-                },
-                "state": {
-                    "description": "Whether the chip has been selected",
-                    "enum": [
-                        "FEEDBACK_CHIP_STATE_UNSPECIFIED",
-                        "SELECTED",
-                        "UNSELECTED"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified selection state",
-                        "Chip is selected",
-                        "Chip is not selected"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAssistantSessionContext": {
-            "description": "Session context specific for Assistant suggestions.",
-            "id": "AppsDynamiteSharedAssistantSessionContext",
-            "properties": {
-                "contextualSessionId": {
-                    "description": "Unique identifier populated by the contextual request handler for each vertical (Ex: File Suggestions, Smart Scheduling, etc.) that can be used to track sessions end-to-end. May span multiple users (sender-specific).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAssistantSuggestion": {
-            "description": "Data for an Assistant suggestion.",
-            "id": "AppsDynamiteSharedAssistantSuggestion",
-            "properties": {
-                "debugContext": {
-                    "$ref": "AppsDynamiteSharedAssistantDebugContext",
-                    "description": "Info regarding suggestion debug information."
-                },
-                "feedbackContext": {
-                    "$ref": "AppsDynamiteSharedAssistantFeedbackContext",
-                    "description": "Data for rendering feedback."
-                },
-                "findDocumentSuggestion": {
-                    "$ref": "AppsDynamiteSharedFindDocumentSuggestion",
-                    "description": "Suggestion type that suggests documents (docs, slides, sheets)."
-                },
-                "serializedSuggestions": {
-                    "description": "String representation of the suggestions provided.",
-                    "type": "string"
-                },
-                "sessionContext": {
-                    "$ref": "AppsDynamiteSharedAssistantSessionContext",
-                    "description": "Session context specific to the Assistant suggestion."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedAssistantUnfulfillableRequest": {
-            "description": "Data for a response to an unfulfillable request.",
-            "id": "AppsDynamiteSharedAssistantUnfulfillableRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedAvatarInfo": {
-            "id": "AppsDynamiteSharedAvatarInfo",
-            "properties": {
-                "emoji": {
-                    "$ref": "AppsDynamiteSharedEmoji"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedBackendUploadMetadata": {
-            "description": "Metadata used only in Dynamite backend for uploaded attachments.",
-            "id": "AppsDynamiteSharedBackendUploadMetadata",
-            "properties": {
-                "blobPath": {
-                    "description": "Blobstore path for the uploaded attachment",
-                    "type": "string"
-                },
-                "contentName": {
-                    "description": "The original file name for the content, not the full path.",
-                    "type": "string"
-                },
-                "contentSize": {
-                    "description": "Scotty reported content size by default. http://google3/uploader/agent/scotty_agent.proto?l=101&rcl=140889785",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "contentType": {
-                    "description": "Type is from Scotty's best_guess by default: http://google3/uploader/agent/scotty_agent.proto?l=51&rcl=140889785",
-                    "type": "string"
-                },
-                "dlpScanOutcome": {
-                    "description": "The results of the Data Loss Prevention (DLP) scan of the attachment. DEPRECATED: use dlp_scan_summary instead.",
-                    "enum": [
-                        "SCAN_UNKNOWN_OUTCOME",
-                        "SCAN_SUCCEEDED_NO_VIOLATION",
-                        "SCAN_SUCCEEDED_BLOCK",
-                        "SCAN_SUCCEEDED_WARN",
-                        "SCAN_SUCCEEDED_AUDIT_ONLY",
-                        "SCAN_FAILURE_EXCEPTION",
-                        "SCAN_FAILURE_RULE_FETCH_FAILED",
-                        "SCAN_FAILURE_TIMEOUT",
-                        "SCAN_FAILURE_ALL_RULES_FAILED",
-                        "SCAN_FAILURE_ILLEGAL_STATE_FOR_ATTACHMENTS",
-                        "SCAN_SKIPPED_EXPERIMENT_DISABLED",
-                        "SCAN_SKIPPED_CONSUMER",
-                        "SCAN_SKIPPED_NON_HUMAN_USER",
-                        "SCAN_SKIPPED_NO_MESSAGE",
-                        "SCAN_SKIPPED_USER_ACKNOWLEDGED_WARNING",
-                        "SCAN_SKIPPED_MESSAGE_FROM_UNSUPPORTED_ORIGIN",
-                        "SCAN_SKIPPED_MESSAGE_SENT_DURING_SPACE_MIGRATION",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_RULES_FOUND",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_ACTION_PARAMS",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_TRIGGER",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_PERMANENT_ERROR",
-                        "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_EMPTY_RESPONSE",
-                        "SCAN_RULE_EVALUATION_SKIPPED_UNSUPPORTED_FILE_TYPE",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_NO_VIOLATION",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_BLOCK",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_WARN",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_AUDIT_ONLY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "This means no violation is detected on the given message/attachment.",
-                        "Violation is detected. The message/attachment will be blocked (or deleted if this happens in failure recovery), the user will be warned, and the violation will be logged to BIP.",
-                        "Violation is detected. The user will be warned, and the violation will be logged to BIP.",
-                        "Violation is detected and will be logged to BIP (no user-facing action performed).",
-                        "Rule fetch and evaluation were attempted but an exception occurred.",
-                        "Rule fetch was attempted but failed, so rule evaluation could not be performed.",
-                        "Rule fetch and evaluation were attempted but the scanning timed out.",
-                        "Rule fetch completed and evaluation were attempted, but all of the rules failed to be evaluated.",
-                        "An IllegalStateException is thrown when executing DLP on attachments. This could happen if the space row is missing.",
-                        "Rule fetch and evaluation is skipped because DLP is not enabled for the user.",
-                        "Rule fetch and evaluation are skipped because the user sending message is consumer.",
-                        "Rule fetch and evaluation are skipped because the user sending message is a non-human user (i.e. a bot).",
-                        "Rule fetch and evaluation are skipped because there is no message to scan. Deprecated: this should not happen since there must be message or attachment for DLP scan.",
-                        "Rule fetch and evaluation are skipped because the user has acknowledged the warning on the message that triggered the Warn violation and sent the message anyway.",
-                        "Scanning was skipped because the message originated from Interop or Babel.",
-                        "Scanning was skipped because the message was sent while the space is in migration mode. See go/migration-mode for details.",
-                        "Rule fetch happened, but rule evaluation is skipped because no rules were found.",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given action params. Deprecated. Use SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given trigger. Deprecated. Use SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable.",
-                        "Rule fetch happened, but rule evaluation is skipped because Changeling returned permanent failure while converting the attachment to text.",
-                        "Rule fetch happened, but rule evaluation is skipped because Changeling returned an empty response while converting the attachment to text.",
-                        "Rule fetch happened, but rule evaluation is skipped because file type is unsupported.",
-                        "Rules were fetched but some evaluations failed. No violation was found in the rules that were successfully evaluated.",
-                        "Rules were fetched but some evaluations failed. A blocking violation was found in the rules that were successfully evaluated. The message/attachment will be blocked, the user will be notified, and the violation will be logged to BIP. A blocking violation takes precedence over all other violation types.",
-                        "Rules were fetched but some evaluations failed. A warn violation was found in the rules that were successfully evaluated. The user will be warned, and the violation will be logged to BIP.",
-                        "Rules were fetched but some evaluations failed. An audit-only violation was found in the rules that were successfully evaluated. The violation will be logged to BIP (no user-facing action performed)."
-                    ],
-                    "type": "string"
-                },
-                "dlpScanSummary": {
-                    "$ref": "DlpScanSummary",
-                    "description": "Summary of a Data Loss Prevention (DLP) scan of the attachment. Attachments are evaluated in the backend when they are uploaded."
-                },
-                "experiment": {
-                    "description": "The list of experiments this video is enabled for Next tag: 19",
-                    "items": {
-                        "enum": [
-                            "UNKNOWN_EXPERIMENT",
-                            "KRONOS_FAST_FORMAT"
-                        ],
-                        "enumDescriptions": [
-                            "",
-                            ""
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "groupId": {
-                    "$ref": "GroupId",
-                    "description": "GroupId to which this attachment is uploaded."
-                },
-                "isClientSideTranscodedVideo": {
-                    "description": "If the uploaded file is a video that has been transcoded on the client side",
-                    "type": "boolean"
-                },
-                "originalDimension": {
-                    "$ref": "AppsDynamiteSharedDimension",
-                    "description": "Original dimension of the content. Only set for image attachments."
-                },
-                "quoteReplyMessageId": {
-                    "$ref": "MessageId",
-                    "description": "The message id of a quote reply referencing this attachment. When present, this attachment has been quoted in a reply message. Normally, the attachment is fetched through the message id in the blob_path, but in the case of a quote reply, the blob_path would contain the quoted message id. Thus this message id field is needed to fetch the quote reply message instead. This field is conditionally populated at read time for quotes and never persisted in storage. See go/message-quoting-attachments for more context."
-                },
-                "sha256": {
-                    "description": "The SHA256 hash of the attachment bytes.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "uploadIp": {
-                    "description": "User IP address at upload time. Ex. \"123.1.2.3\". Used by Ares abuse scanning.",
-                    "type": "string"
-                },
-                "uploadTimestampUsec": {
-                    "description": "Timestamp of when user finished uploading the content.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "videoId": {
-                    "description": "VideoID of the video attachments. This ID shall meets the Youtube ID format of 16 hex characters. For example, '4c14b8825af6059b' is a valid ID.",
-                    "type": "string"
-                },
-                "videoThumbnailBlobId": {
-                    "description": "Full Blobstore ID for the video thumbnail.",
-                    "type": "string"
-                },
-                "virusScanResult": {
-                    "description": "Result for a virus scan.",
-                    "enum": [
-                        "UNKNOWN_VIRUS_SCAN_RESULT",
-                        "CLEAN",
-                        "INFECTED",
-                        "ERROR",
-                        "POLICY_VIOLATION"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "The document violates Google's policy for executables and archives."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedCalendarEventAnnotationData": {
-            "id": "AppsDynamiteSharedCalendarEventAnnotationData",
-            "properties": {
-                "calendarEvent": {
-                    "$ref": "AppsDynamiteSharedCalendarEventAnnotationDataCalendarEvent"
-                },
-                "eventCreation": {
-                    "$ref": "AppsDynamiteSharedCalendarEventAnnotationDataEventCreation",
-                    "description": "Notification about the creation of an event."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedCalendarEventAnnotationDataCalendarEvent": {
-            "id": "AppsDynamiteSharedCalendarEventAnnotationDataCalendarEvent",
-            "properties": {
-                "endTime": {
-                    "$ref": "AppsDynamiteSharedCalendarEventAnnotationDataCalendarEventTime",
-                    "description": "The end time of the event."
-                },
-                "eventId": {
-                    "description": "ID of the event.",
-                    "type": "string"
-                },
-                "startTime": {
-                    "$ref": "AppsDynamiteSharedCalendarEventAnnotationDataCalendarEventTime",
-                    "description": "The start time of the event."
-                },
                 "title": {
-                    "description": "Title of the event (at the time the message was generated).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedCalendarEventAnnotationDataCalendarEventTime": {
-            "id": "AppsDynamiteSharedCalendarEventAnnotationDataCalendarEventTime",
-            "properties": {
-                "allDay": {
-                    "$ref": "Date",
-                    "description": "All day event."
-                },
-                "timed": {
-                    "description": "Non all day event.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedCalendarEventAnnotationDataEventCreation": {
-            "description": "Creation of an event (no extra data for now).",
-            "id": "AppsDynamiteSharedCalendarEventAnnotationDataEventCreation",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedCallAnnotationData": {
-            "description": "Data used to render Meet or Google Voice chips in Chat. See go/dynamite-calling-artifacts-in-chat.",
-            "id": "AppsDynamiteSharedCallAnnotationData",
-            "properties": {
-                "callEndedTimestamp": {
-                    "description": "Timestamp when the call ended. Used to render the call ended system message.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "callMetadata": {
-                    "$ref": "AppsDynamiteSharedCallMetadata",
-                    "description": "Required. Call metadata required to create the call artifacts. For now, the metadata contains only the call id to identify the call. This field allows additional data (e.g. voice call type) to be added if needed in the future."
-                },
-                "callStatus": {
-                    "description": "Required. Indicates the call status for the space. Used to determine the chip's state.",
-                    "enum": [
-                        "CALL_STATUS_UNSPECIFIED",
-                        "CALL_STARTED",
-                        "CALL_MISSED",
-                        "CALL_ENDED"
-                    ],
-                    "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
-                        "Indicates that the call has started.",
-                        "Indicates that the call is missed.",
-                        "Indicates that the call has ended."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedCallMetadata": {
-            "description": "Metadata required to generate call artifacts. This can either be the metadata for a Meet or, in the future, Google Voice call.",
-            "id": "AppsDynamiteSharedCallMetadata",
-            "properties": {
-                "meetMetadata": {
-                    "$ref": "AppsDynamiteSharedMeetMetadata",
-                    "description": "Metadata specific for the Meet call."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedCardClickSuggestion": {
-            "description": "Card click which identifies one suggestion provided by the app/bot.",
-            "id": "AppsDynamiteSharedCardClickSuggestion",
-            "properties": {
-                "actionId": {
-                    "description": "Identify the button/action that created the suggestion. A simple example would be a card button within the stream, or the id which can identify a specific suggestion.",
-                    "type": "string"
-                },
-                "suggestionMessageId": {
-                    "$ref": "MessageId",
-                    "description": "The message_id for the message that was posted by the app/bot."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedChatItem": {
-            "description": "Next Id: 5",
-            "id": "AppsDynamiteSharedChatItem",
-            "properties": {
-                "activityInfo": {
-                    "description": "Information needed to render the specific type of feed item.",
-                    "items": {
-                        "$ref": "AppsDynamiteSharedChatItemActivityInfo"
-                    },
-                    "type": "array"
-                },
-                "groupInfo": {
-                    "$ref": "AppsDynamiteSharedChatItemGroupInfo",
-                    "description": "Only populated on read path and should not be persisted in storage."
-                },
-                "messageInfo": {
-                    "$ref": "AppsDynamiteSharedMessageInfo",
-                    "description": "Additional information about the original chat message that isn't captured in the top-level message proto."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedChatItemActivityInfo": {
-            "id": "AppsDynamiteSharedChatItemActivityInfo",
-            "properties": {
-                "feedItemNudge": {
-                    "$ref": "AppsDynamiteSharedChatItemActivityInfoFeedItemNudge"
-                },
-                "feedItemReactions": {
-                    "$ref": "AppsDynamiteSharedChatItemActivityInfoFeedItemReactions"
-                },
-                "feedItemThreadReply": {
-                    "$ref": "AppsDynamiteSharedChatItemActivityInfoFeedItemThreadReply"
-                },
-                "feedItemUserMention": {
-                    "$ref": "AppsDynamiteSharedChatItemActivityInfoFeedItemUserMention"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedChatItemActivityInfoFeedItemNudge": {
-            "description": "Existence of this attribute indicates that the AF item is for a message nudge item.",
-            "id": "AppsDynamiteSharedChatItemActivityInfoFeedItemNudge",
-            "properties": {
-                "nudgeType": {
-                    "description": "Nudge type of the nudge feed item.",
-                    "enum": [
-                        "UNDEFINED",
-                        "REPLY",
-                        "FOLLOW_UP"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The message receiver is nudged since the message may require a reply.",
-                        "The message creator is nudged since the message may require a follow-up."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedChatItemActivityInfoFeedItemReactions": {
-            "description": "Existence of this attribute indicates that the AF item is for message reactions, but it is intentionally left empty since the list of reactions can be found in the top-level Message.Reactions.",
-            "id": "AppsDynamiteSharedChatItemActivityInfoFeedItemReactions",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedChatItemActivityInfoFeedItemThreadReply": {
-            "description": "Existence of this attribute indicates that the AF item is for thread reply.",
-            "id": "AppsDynamiteSharedChatItemActivityInfoFeedItemThreadReply",
-            "properties": {
-                "replyType": {
-                    "description": "Reply type of the thread reply feed item. The field is not persisted in storage. It's populated when constructing Activity Feed payload.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "ROOT",
-                        "FOLLOWER"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The thread reply feed item is for the root message poster.",
-                        "The thread reply feed item is for a thread follower who's not the root message poster."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedChatItemActivityInfoFeedItemUserMention": {
-            "description": "Existence of this attribute indicates that the AF item is for a user mention item.",
-            "id": "AppsDynamiteSharedChatItemActivityInfoFeedItemUserMention",
-            "properties": {
-                "type": {
-                    "description": "User mention type",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "DIRECT",
-                        "ALL"
-                    ],
-                    "enumDescriptions": [
-                        "Mention type not specified.",
-                        "Mentioned directly by name.",
-                        "Mentioned by @all."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedChatItemGroupInfo": {
-            "description": "Information about the space that the item originated from. This will be used to display Activity Feed items from rooms, and only contain the necessary information, such as the space name and group attributes. NEXT TAG: 6",
-            "id": "AppsDynamiteSharedChatItemGroupInfo",
-            "properties": {
-                "attributeCheckerGroupType": {
-                    "description": "This is needed to determine what type of group the source message came from to support click-to-source.",
-                    "enum": [
-                        "ATTRIBUTE_CHECKER_GROUP_TYPE_UNSPECIFIED",
-                        "ONE_TO_ONE_HUMAN_DM",
-                        "ONE_TO_ONE_BOT_DM",
-                        "IMMUTABLE_MEMBERSHIP_GROUP_DM",
-                        "FLAT_ROOM",
-                        "THREADED_ROOM",
-                        "IMMUTABLE_MEMBERSHIP_HUMAN_DM",
-                        "ACTIVITY_FEED",
-                        "SHORTCUT"
-                    ],
-                    "enumDescriptions": [
-                        "LINT.IfChange",
-                        "A 1:1 DM that has two human users. Deprecated. Use IMMUTABLE_MEMBERSHIP_HUMAN_DM instead.",
-                        "A 1:1 DM between a human user and a bot.",
-                        "A group DM that has multiple human users with immutable group membership. Deprecated. Use IMMUTABLE_MEMBERSHIP_HUMAN_DM instead.",
-                        "A flat room that contains a single thread.",
-                        "A threaded room. Topics in this room are threaded, and users can reply to any topic.",
-                        "A DM with immutable group membership. It can be a 1:1 DM or a group DM with multiple human users.",
-                        "Represents an Activity Feed space. These groups are modeled like flat rooms and contain items for users to catch up on important things. Each user should only have one group of this type. See go/activity-feed. Deprecated: The go/activity-feed project is cancelled and this should no longer be used.",
-                        "Represents a shortcut space. These groups are modeled like flat rooms and contain items for users to catch up on important things such as user mentioned messages and starred messages. LINT.ThenChange(//depot/google3/logs/proto/apps_dynamite/dynamite_visual_element_entry.proto:LoggingGroupType,//depot/google3/java/com/google/apps/dynamite/v1/web/ui/group/groups.js:LoggingGroupType)"
-                    ],
-                    "type": "string"
-                },
-                "groupName": {
-                    "type": "string"
-                },
-                "groupReadTimeUsec": {
-                    "description": "Timestamp of when the group containing the message has been read by the user.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "inlineThreadingEnabled": {
-                    "description": "Indicates whether the group has inline replies enabled. If enabled, clients will render the space with inline replies.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedContentReportType": {
-            "description": "Denotes a type of content report a user can send.",
-            "id": "AppsDynamiteSharedContentReportType",
-            "properties": {
-                "systemViolation": {
-                    "description": "Required. Google-defined system violation, covering the most common violations.",
-                    "enum": [
-                        "VIOLATION_UNSPECIFIED",
-                        "HARASSMENT",
-                        "DISCRIMINATION",
-                        "EXPLICIT_CONTENT",
-                        "SPAM",
-                        "CONFIDENTIAL_INFORMATION",
-                        "SENSITIVE_INFORMATION",
-                        "FRAUD",
-                        "MALWARE",
-                        "ILLEGAL_ACTIVITIES",
-                        "OTHER"
-                    ],
-                    "enumDescriptions": [
-                        "Default value if unset. Do not use directly. This value should not appear as a selectable violation during content reporting.",
-                        "\"Harassment, offensive, or rude behavior\"",
-                        "\"Discrimination or harmful stereotypes against anyone, including protected groups\"",
-                        "\"Explicit content that's graphic, violent, or otherwise inappropriate\"",
-                        "\"Spam\"",
-                        "\"Confidential information\"",
-                        "\"Sensitive information\"",
-                        "Phishing, impersonation/misrepresentation, or deceiving other users into sharing information under false pretenses.",
-                        "Malware, viruses, Trojan horses, corrupted files, destructive code, etc.",
-                        "Promoting, organizing, or engaging in illegal activities.",
-                        "\"Something else\""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedCustomEmoji": {
-            "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: 14",
-            "id": "AppsDynamiteSharedCustomEmoji",
-            "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"
-                },
-                "contentType": {
-                    "description": "Content type of the file used to upload the emoji. Used for takeout. Written to Spanner when the emoji is created.",
-                    "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."
-                },
-                "deleteTimeMicros": {
-                    "description": "Time when the emoji was deleted, in microseconds. This field may be present in Spanner, within the server, or in public APIs. Only present if the emoji has been deleted.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "ephemeralUrl": {
-                    "description": "Output only. A short-lived URL clients can use for directly accessing a custom emoji image. This field is intended for API consumption, and should *never* be persisted to Spanner.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "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"
-        },
-        "AppsDynamiteSharedDimension": {
-            "description": "Dimension for the uploaded attachments.",
-            "id": "AppsDynamiteSharedDimension",
-            "properties": {
-                "height": {
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "width": {
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedDlpMetricsMetadata": {
-            "description": "LINT.IfChange",
-            "id": "AppsDynamiteSharedDlpMetricsMetadata",
-            "properties": {
-                "dlpStatus": {
-                    "description": "[required] Describes the DLP status of message send and attachment upload events.",
-                    "enum": [
-                        "DLP_STATUS_UNKNOWN",
-                        "DLP_DISABLED",
-                        "DLP_ENABLED_NO_RULE_FETCH",
-                        "DLP_ENABLED_RULES_FETCHED_NO_RULES",
-                        "DLP_ENABLED_RULES_FETCHED_NO_APPLICABLE_RULES",
-                        "DLP_ENABLED_RULES_FETCHED_AND_EVALUATED",
-                        "DLP_ENABLED_SCAN_TIMEOUT",
-                        "DLP_ENABLED_SCAN_FAILED"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Rule fetch and evaluation are skipped because DLP experiment is not enabled.",
-                        "Rule fetch and evaluation are skipped because there is no rule to be fetched (e.g. message is sent from a consumer, or there is no message.)",
-                        "Rule fetch happened, but rule evalution is skipped because the fetch returned no rules.",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable.",
-                        "Rule fetch and evaluation were performed and completed successfully.",
-                        "DLP scan was attempted but timed out.",
-                        "Generic DLP failure. This case covers any other errors/exceptions in the Chat backend that caused the DLP scan to fail."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedDocument": {
-            "description": "Data for rendering a document.",
-            "id": "AppsDynamiteSharedDocument",
-            "properties": {
-                "fileId": {
-                    "description": "Unique file ID.",
-                    "type": "string"
-                },
-                "justification": {
-                    "$ref": "AppsDynamiteSharedJustification",
-                    "description": "Justification to explain why this document is being suggested."
-                },
-                "lastModifiedTime": {
-                    "description": "Time the document was last modified.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "mimeType": {
-                    "description": "Used to determine which icon to render (e.g. docs, slides, sheets)",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Title of the document.",
+                    "description": "[Required] Title of the action.",
                     "type": "string"
                 },
                 "url": {
-                    "description": "URL of the document.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedEmoji": {
-            "id": "AppsDynamiteSharedEmoji",
-            "properties": {
-                "customEmoji": {
-                    "$ref": "AppsDynamiteSharedCustomEmoji",
-                    "description": "A custom emoji."
-                },
-                "unicode": {
-                    "description": "A basic emoji represented by a unicode string.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedFindDocumentSuggestion": {
-            "description": "Data for a FindDocument suggestion type.",
-            "id": "AppsDynamiteSharedFindDocumentSuggestion",
-            "properties": {
-                "documentSuggestions": {
-                    "description": "List of documents to render as suggestions.",
-                    "items": {
-                        "$ref": "AppsDynamiteSharedDocument"
-                    },
-                    "type": "array"
-                },
-                "showActionButtons": {
-                    "description": "Whether to show the action buttons in the card for the suggestions.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedGroupDetails": {
-            "description": "NEXT TAG: 3 A GroupDetails proto will store the information pertaining to single Group.",
-            "id": "AppsDynamiteSharedGroupDetails",
-            "properties": {
-                "description": {
-                    "description": "A simple text that describes the purpose of a single Group, the general theme of the topics to be posted and/or the denominator of the Group participants.",
-                    "type": "string"
-                },
-                "guidelines": {
-                    "description": "A simple text describing the rules and expectations from members when participating in conversation.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedGroupVisibility": {
-            "id": "AppsDynamiteSharedGroupVisibility",
-            "properties": {
-                "state": {
-                    "enum": [
-                        "UNKNOWN",
-                        "PRIVATE",
-                        "PUBLIC"
-                    ],
-                    "enumDescriptions": [
-                        "Do not use.",
-                        "Explicitly invited users may join the room.",
-                        "Anyone in the domain may join the room."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedJustification": {
-            "description": "Data for rendering a justification for a document.",
-            "id": "AppsDynamiteSharedJustification",
-            "properties": {
-                "actionTime": {
-                    "description": "Time the action took place.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "actionType": {
-                    "description": "Type of action performed on the document.",
-                    "enum": [
-                        "ACTION_TYPE_UNSPECIFIED",
-                        "COMMENTED",
-                        "CREATED",
-                        "EDITED",
-                        "PRESENTED",
-                        "SHARED",
-                        "VIEWED",
-                        "COMMENT_RESOLVED",
-                        "SENT"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified action.",
-                        "Commented on document.",
-                        "Created document.",
-                        "Edited document.",
-                        "Presented document.",
-                        "Shared document.",
-                        "Viewed document.",
-                        "Resolved comment on document.",
-                        "Sent document over chat/email."
-                    ],
-                    "type": "string"
-                },
-                "documentOwner": {
-                    "$ref": "AppsDynamiteSharedJustificationPerson",
-                    "description": "Owner of the document."
-                },
-                "topics": {
-                    "description": "Words or phrases from the user's query that describes the document content. (Ex: Users query is \"Can you share the document about Bullseye?\" the extracted topic would be \"Bullseye\").",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedJustificationPerson": {
-            "description": "Data for rendering a person associated with a document.",
-            "id": "AppsDynamiteSharedJustificationPerson",
-            "properties": {
-                "isRecipient": {
-                    "description": "Whether the person is the recipient of the suggestions.",
-                    "type": "boolean"
-                },
-                "user": {
-                    "$ref": "UserId",
-                    "description": "Obfuscated user ID."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedMeetMetadata": {
-            "description": "Metadata specific for a Meet call that are required to generate call artifacts.",
-            "id": "AppsDynamiteSharedMeetMetadata",
-            "properties": {
-                "meetingCode": {
-                    "description": "Required. A globally unique code (e.g. \"cxv-zbgj-wzw\") that points to a meeting space. Note: Meeting codes may be regenerated, which will cause old meeting codes to become invalid.",
-                    "type": "string"
-                },
-                "meetingType": {
-                    "description": "Required. Type of the meeting. This controls the chat client UX.",
-                    "enum": [
-                        "MEETING_TYPE_UNSPECIFIED",
-                        "HUDDLE",
-                        "CALL"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "meetingUrl": {
-                    "description": "Required. A URL, in the format \"https://meet.google.com/*\" (e.g. https://meet.google.com/cxv-zbgj-wzw), to identify and access the meeting space.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedMessageComponentSearchInfo": {
-            "description": "Metadata used to describe search information in a specific component of a chat message, for example an annotation or an attachment.",
-            "id": "AppsDynamiteSharedMessageComponentSearchInfo",
-            "properties": {
-                "matchedSearch": {
-                    "description": "Whether the whole component matched the search.",
-                    "type": "boolean"
-                },
-                "titleTextWithDescription": {
-                    "$ref": "AppsDynamiteSharedTextWithDescription",
-                    "description": "Backend should always set TextWithDescription.text_body based on the title (or its snippet) of the annotation or attachment."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedMessageInfo": {
-            "description": "Information that references a Dynamite chat message. This is only used for Activity Feed messages.",
-            "id": "AppsDynamiteSharedMessageInfo",
-            "properties": {
-                "messageId": {
-                    "$ref": "MessageId",
-                    "description": "Id of the source chat message. This is kept here because the top-level message ID to refers the AF message ID."
-                },
-                "messageType": {
-                    "description": "The type of the source chat message.",
-                    "enum": [
-                        "MESSAGE_TYPE_UNSPECIFIED",
-                        "INLINE_REPLY"
-                    ],
-                    "enumDescriptions": [
-                        "Default value where type is not specified.",
-                        "The source chat message is a threaded reply to another message."
-                    ],
-                    "type": "string"
-                },
-                "topicReadTimeUsec": {
-                    "description": "Timestamp of when the topic containing the message has been read by the user. This is populated if the message references an inline reply, in which case the space may be marked as read but the topic still has unread messages.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedMessageIntegrationPayload": {
-            "description": "The payload(restricted to 1P applications) to be stored with a specific message.",
-            "id": "AppsDynamiteSharedMessageIntegrationPayload",
-            "properties": {
-                "projectNumber": {
-                    "description": "Pantheon project number used to identify the calling app.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "tasksMessageIntegrationPayload": {
-                    "$ref": "AppsDynamiteSharedTasksMessageIntegrationPayload"
-                },
-                "type": {
-                    "description": "An enum indicating which 1P application's payload this is. This field is required to add 1P payload.",
-                    "enum": [
-                        "PAYLOAD_TYPE_UNSPECIFIED",
-                        "TASKS"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedMessageSearchInfo": {
-            "description": "Metadata used to describe how to render a message in search results page, e.g., highlighting and snipetting. In future, we can use this proto to return more search specific data attached to a message.",
-            "id": "AppsDynamiteSharedMessageSearchInfo",
-            "properties": {
-                "matchedSegmentsInTextBody": {
-                    "description": "An example use case: clients can use this field to highlight matched segments in message text_body defined in http://google3/apps/dynamite/v1/frontend/api/message.proto;l=104;rcl=513400736.",
-                    "items": {
-                        "$ref": "AppsDynamiteSharedTextSegmentsWithDescription"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedOrganizationInfo": {
-            "description": "Contains info about the entity that something is, or is owned by.",
-            "id": "AppsDynamiteSharedOrganizationInfo",
-            "properties": {
-                "consumerInfo": {
-                    "$ref": "AppsDynamiteSharedOrganizationInfoConsumerInfo"
-                },
-                "customerInfo": {
-                    "$ref": "AppsDynamiteSharedOrganizationInfoCustomerInfo"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedOrganizationInfoConsumerInfo": {
-            "description": "Intentionally empty. Used to disambiguate consumer and customer use cases in oneof below.",
-            "id": "AppsDynamiteSharedOrganizationInfoConsumerInfo",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedOrganizationInfoCustomerInfo": {
-            "id": "AppsDynamiteSharedOrganizationInfoCustomerInfo",
-            "properties": {
-                "customerId": {
-                    "$ref": "CustomerId"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedOriginAppSuggestion": {
-            "description": "Stores the suggestion provided by apps/bots.",
-            "id": "AppsDynamiteSharedOriginAppSuggestion",
-            "properties": {
-                "appId": {
-                    "$ref": "AppId"
-                },
-                "cardClickSuggestion": {
-                    "$ref": "AppsDynamiteSharedCardClickSuggestion"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedPhoneNumber": {
-            "id": "AppsDynamiteSharedPhoneNumber",
-            "properties": {
-                "type": {
-                    "description": "The phone number type, e.g., work, mobile, etc.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The actual phone number.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedReaction": {
-            "id": "AppsDynamiteSharedReaction",
-            "properties": {
-                "count": {
-                    "description": "The total number of users who have reacted.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "createTimestamp": {
-                    "description": "When the first emoji of this type was added.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "currentUserParticipated": {
-                    "description": "Whether the current user reacted using this emoji. Note: Unlike most properties of messages, this is different per-user.",
-                    "type": "boolean"
-                },
-                "emoji": {
-                    "$ref": "AppsDynamiteSharedEmoji"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedRetentionSettings": {
-            "description": "The settings of retention period of a message or topic.",
-            "id": "AppsDynamiteSharedRetentionSettings",
-            "properties": {
-                "expiryTimestamp": {
-                    "description": "The timestamp after which the message/topic should be removed, in microseconds since the epoch, when state == EPHEMERAL_ONE_DAY. The value should not be set in other cases.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "state": {
-                    "description": "The retention state.",
-                    "enum": [
-                        "UNKNOWN_RETENTION_STATE",
-                        "PERMANENT",
-                        "EPHEMERAL_ONE_DAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The message/topic should be kept permanently.",
-                        "The message/topic should be kept with a 24-hour TTL."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedSegmentedMembershipCount": {
-            "description": "Contains info on membership count for member types: HUMAN_USER, APP_USER & ROSTER_MEMBER different states: INVITED, JOINED",
-            "id": "AppsDynamiteSharedSegmentedMembershipCount",
-            "properties": {
-                "memberType": {
-                    "enum": [
-                        "MEMBER_TYPE_UNSPECIFIED",
-                        "HUMAN_USER",
-                        "ROSTER_MEMBER"
-                    ],
-                    "enumDescriptions": [
-                        "default value",
-                        "member is a human user",
-                        "member is a roster"
-                    ],
-                    "type": "string"
-                },
-                "membershipCount": {
-                    "description": "count of members with given type and state",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "membershipState": {
-                    "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"
-        },
-        "AppsDynamiteSharedSegmentedMembershipCounts": {
-            "id": "AppsDynamiteSharedSegmentedMembershipCounts",
-            "properties": {
-                "value": {
-                    "items": {
-                        "$ref": "AppsDynamiteSharedSegmentedMembershipCount"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedSpaceInfo": {
-            "description": "Defines the representation of a single matching space.",
-            "id": "AppsDynamiteSharedSpaceInfo",
-            "properties": {
-                "avatarInfo": {
-                    "$ref": "AppsDynamiteSharedAvatarInfo"
-                },
-                "avatarUrl": {
-                    "type": "string"
-                },
-                "description": {
-                    "type": "string"
-                },
-                "groupId": {
-                    "$ref": "GroupId"
-                },
-                "inviterEmail": {
-                    "description": "The email address of the user that invited the calling user to the room, if available. This field will only be populated for direct invites, it will be empty if the user was indirectly invited to the group.",
-                    "type": "string"
-                },
-                "isExternal": {
-                    "description": "Whether this is a space that enables guest access",
-                    "type": "boolean"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "numMembers": {
-                    "description": "Deprecated. Use segmented_membership_counts instead which also includes other counts such as rosters.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "segmentedMembershipCounts": {
-                    "$ref": "AppsDynamiteSharedSegmentedMembershipCounts",
-                    "description": "Member counts object with types of members and their respective counts."
-                },
-                "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"
-        },
-        "AppsDynamiteSharedTasksAnnotationData": {
-            "description": "This is the internal version of the API proto at google3/google/chat/v1/gsuite_message_integration.proto",
-            "id": "AppsDynamiteSharedTasksAnnotationData",
-            "properties": {
-                "assigneeChange": {
-                    "$ref": "AppsDynamiteSharedTasksAnnotationDataAssigneeChange"
-                },
-                "completionChange": {
-                    "$ref": "AppsDynamiteSharedTasksAnnotationDataCompletionChange"
-                },
-                "creation": {
-                    "$ref": "AppsDynamiteSharedTasksAnnotationDataCreation"
-                },
-                "deletionChange": {
-                    "$ref": "AppsDynamiteSharedTasksAnnotationDataDeletionChange"
-                },
-                "taskId": {
-                    "description": "ID of task. Will be used to create deep links to Tasks.",
-                    "type": "string"
-                },
-                "taskProperties": {
-                    "$ref": "AppsDynamiteSharedTasksAnnotationDataTaskProperties",
-                    "description": "Task properties after the update has been applied."
-                },
-                "userDefinedMessage": {
-                    "$ref": "AppsDynamiteSharedTasksAnnotationDataUserDefinedMessage"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedTasksAnnotationDataAssigneeChange": {
-            "id": "AppsDynamiteSharedTasksAnnotationDataAssigneeChange",
-            "properties": {
-                "oldAssignee": {
-                    "$ref": "UserId",
-                    "description": "Obfuscated user ID of previous assignee. Not set if the task was originally not assigned."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedTasksAnnotationDataCompletionChange": {
-            "id": "AppsDynamiteSharedTasksAnnotationDataCompletionChange",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedTasksAnnotationDataCreation": {
-            "id": "AppsDynamiteSharedTasksAnnotationDataCreation",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedTasksAnnotationDataDeletionChange": {
-            "id": "AppsDynamiteSharedTasksAnnotationDataDeletionChange",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedTasksAnnotationDataTaskProperties": {
-            "description": "All relevant task properties for a Chat message.",
-            "id": "AppsDynamiteSharedTasksAnnotationDataTaskProperties",
-            "properties": {
-                "assignee": {
-                    "$ref": "UserId",
-                    "description": "Obfuscated user ID of new assignee. Not set if the task doesn't have an assignee."
-                },
-                "completed": {
-                    "description": "Whether the task is marked as completed.",
-                    "type": "boolean"
-                },
-                "deleted": {
-                    "description": "Whether the task is marked as deleted.",
-                    "type": "boolean"
-                },
-                "description": {
-                    "description": "The description of the task. If Task original description's length is greater than 1024, then Task BE sends the truncated description to Dynamite Integration Server.",
-                    "type": "string"
-                },
-                "startDate": {
-                    "$ref": "Date",
-                    "description": "Set if the task has a date but no time. Source of truth in Tasks BE: http://shortn/_wyT7eB4Ixv"
-                },
-                "startTime": {
-                    "description": "Set if the task has both a date and a time. Source of truth in Tasks BE: http://shortn/_u6cr0F5ttE",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "The title of the task.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedTasksAnnotationDataUserDefinedMessage": {
-            "description": "Used for task card attachments on custom user messages that should be kept as is without generating an i18n event message, e.g. the user starts a conversation from an existing task. IMPORTANT: please don't populate this field yet as it could break existing flows until it's implemented. See code at http://shortn/_CM74CdENMx used by http://shortn/_5o85POJY8Q.",
-            "id": "AppsDynamiteSharedTasksAnnotationDataUserDefinedMessage",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedTasksMessageIntegrationPayload": {
-            "description": "A payload containing Tasks metadata for rendering a live card. Currently not used by the Tasks integration.",
-            "id": "AppsDynamiteSharedTasksMessageIntegrationPayload",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteSharedTextSegment": {
-            "description": "Defines a segment in a text.",
-            "id": "AppsDynamiteSharedTextSegment",
-            "properties": {
-                "length": {
-                    "description": "Length of the segment in the text.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "startIndex": {
-                    "description": "Start index (0-indexed and inclusive) of the segment in the text.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedTextSegmentsWithDescription": {
-            "description": "Defines text segments with description type associated.",
-            "id": "AppsDynamiteSharedTextSegmentsWithDescription",
-            "properties": {
-                "descriptionType": {
-                    "enum": [
-                        "DESCRIPTION_TYPE_UNSPECIFIED",
-                        "KEYWORD_MATCH"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Indicates the text segments contain matched keywords. Client can highlight them in search results page."
-                    ],
-                    "type": "string"
-                },
-                "textSegment": {
-                    "items": {
-                        "$ref": "AppsDynamiteSharedTextSegment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedTextWithDescription": {
-            "description": "Defines a text with descriptive text segments associated.",
-            "id": "AppsDynamiteSharedTextWithDescription",
-            "properties": {
-                "textBody": {
-                    "type": "string"
-                },
-                "textSegmentsWithDescription": {
-                    "items": {
-                        "$ref": "AppsDynamiteSharedTextSegmentsWithDescription"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedUserBlockRelationship": {
-            "description": "User-block relationship",
-            "id": "AppsDynamiteSharedUserBlockRelationship",
-            "properties": {
-                "hasBlockedRequester": {
-                    "type": "boolean"
-                },
-                "isBlockedByRequester": {
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteSharedVideoReference": {
-            "description": "Reference to a transcoded video attachment.",
-            "id": "AppsDynamiteSharedVideoReference",
-            "properties": {
-                "format": {
-                    "description": "Available transcode format. Value is defined in video/storage/proto/content_header.proto",
-                    "items": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "status": {
-                    "description": "Transcode status",
-                    "enum": [
-                        "UNKNOWN_STATUS",
-                        "SUCCESS",
-                        "ERROR",
-                        "NOT_APPLICABLE",
-                        "THUMBNAIL_SUCCESS",
-                        "GO_LIVE_SUCCESS"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageAction": {
-            "description": "An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form.",
-            "id": "AppsDynamiteStorageAction",
-            "properties": {
-                "function": {
-                    "description": "Apps Script function to invoke when the containing element is clicked/activated.",
-                    "type": "string"
-                },
-                "interaction": {
-                    "enum": [
-                        "INTERACTION_UNSPECIFIED",
-                        "OPEN_DIALOG"
-                    ],
-                    "enumDescriptions": [
-                        "Default value if interaction is not specified.",
-                        "A dialog opens by clicking the button."
-                    ],
-                    "type": "string"
-                },
-                "loadIndicator": {
-                    "enum": [
-                        "SPINNER",
-                        "NONE"
-                    ],
-                    "enumDescriptions": [
-                        "Displays a spinner to indicate that content is loading.",
-                        "Nothing is displayed."
-                    ],
-                    "type": "string"
-                },
-                "parameters": {
-                    "description": "List of action parameters.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageActionActionParameter"
-                    },
-                    "type": "array"
-                },
-                "persistValues": {
-                    "description": "Indicates whether form values persist after the action. The default value is `false`. If `true`, form values remain after the action is triggered. When using [LoadIndicator.NONE](workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) for actions, `persist_values` = `true`is recommended, as it ensures that any changes made by the user after form or on change actions are sent to the server are not overwritten by the response. If `false`, the form values are cleared when the action is triggered. When `persist_values` is set to `false`, it is strongly recommended that the card use [LoadIndicator.SPINNER](workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) for all actions, as this locks the UI to ensure no changes are made by the user while the action is being processed.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageActionActionParameter": {
-            "description": "List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.",
-            "id": "AppsDynamiteStorageActionActionParameter",
-            "properties": {
-                "key": {
-                    "description": "The name of the parameter for the action script.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value of the parameter.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageBorderStyle": {
-            "description": "The style options for the border of a card or widget, including the border type and color.",
-            "id": "AppsDynamiteStorageBorderStyle",
-            "properties": {
-                "cornerRadius": {
-                    "description": "The corner radius for the border.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "strokeColor": {
-                    "$ref": "Color",
-                    "description": "The colors to use when the type is `BORDER_TYPE_STROKE`."
-                },
-                "type": {
-                    "description": "The border type.",
-                    "enum": [
-                        "BORDER_TYPE_UNSPECIFIED",
-                        "NO_BORDER",
-                        "STROKE"
-                    ],
-                    "enumDescriptions": [
-                        "No value specified.",
-                        "No border.",
-                        "Outline."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageButton": {
-            "description": "A button. Can be a text button or an image button.",
-            "id": "AppsDynamiteStorageButton",
-            "properties": {
-                "altText": {
-                    "description": "The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.",
-                    "type": "string"
-                },
-                "color": {
-                    "$ref": "Color",
-                    "description": "If set, the button is filled with a solid background."
-                },
-                "disabled": {
-                    "description": "If true, the button is displayed in a disabled state and doesn't respond to user actions.",
-                    "type": "boolean"
-                },
-                "icon": {
-                    "$ref": "AppsDynamiteStorageIcon",
-                    "description": "The icon image."
-                },
-                "onClick": {
-                    "$ref": "AppsDynamiteStorageOnClick",
-                    "description": "The action to perform when the button is clicked."
-                },
-                "text": {
-                    "description": "The text of the button.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageButtonList": {
-            "description": "A list of buttons layed out horizontally.",
-            "id": "AppsDynamiteStorageButtonList",
-            "properties": {
-                "buttons": {
-                    "items": {
-                        "$ref": "AppsDynamiteStorageButton"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageCard": {
-            "description": "A card is a UI element that can contain UI widgets such as text and images. For more information, see Cards . For example, the following JSON creates a card that has a header with the name, position, icons, and link for a contact, followed by a section with contact information like email and phone number. ``` { \"header\": { \"title\": \"Heba Salam\", \"subtitle\": \"Software Engineer\", \"imageStyle\": \"ImageStyle.AVATAR\", \"imageUrl\": \"https://example.com/heba_salam.png\", \"imageAltText\": \"Avatar for Heba Salam\" }, \"sections\" : [ { \"header\": \"Contact Info\", \"widgets\": [ { \"decorated_text\": { \"icon\": { \"knownIcon\": \"EMAIL\" }, \"content\": \"heba.salam@example.com\" } }, { \"decoratedText\": { \"icon\": { \"knownIcon\": \"PERSON\" }, \"content\": \"Online\" } }, { \"decoratedText\": { \"icon\": { \"knownIcon\": \"PHONE\" }, \"content\": \"+1 (555) 555-1234\" } }, { \"buttons\": [ { \"textButton\": { \"text\": \"Share\", }, \"onClick\": { \"openLink\": { \"url\": \"https://example.com/share\" } } }, { \"textButton\": { \"text\": \"Edit\", }, \"onClick\": { \"action\": { \"function\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"EDIT\" } ], \"loadIndicator\": \"LoadIndicator.SPINNER\" } } } ] } ], \"collapsible\": true, \"uncollapsibleWidgetsCount\": 3 } ], \"cardActions\": [ { \"actionLabel\": \"Send Feedback\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/feedback\" } } } ], \"name\": \"contact-card-K3wB6arF2H9L\" } ```",
-            "id": "AppsDynamiteStorageCard",
-            "properties": {
-                "cardActions": {
-                    "description": "The actions of this card. They are added to a card's generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` \"card_actions\": [ { \"actionLabel\": \"Setting\", \"onClick\": { \"action\": { \"functionName\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"SETTING\" } ], \"loadIndicator\": \"LoadIndicator.SPINNER\" } } }, { \"actionLabel\": \"Send Feedback\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/feedback\" } } } ] ```",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageCardCardAction"
-                    },
-                    "type": "array"
-                },
-                "header": {
-                    "$ref": "AppsDynamiteStorageCardCardHeader",
-                    "description": "The header of the card. A header usually contains a title and an image."
-                },
-                "name": {
-                    "description": "Name of the card, which is used as a identifier for the card in card navigation.",
-                    "type": "string"
-                },
-                "sections": {
-                    "description": "Sections are separated by a line divider.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageCardSection"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageCardCardAction": {
-            "description": "A card action is the action associated with the card. For example, an invoice card might include actions such as delete invoice, email invoice, or open the invoice in a browser.",
-            "id": "AppsDynamiteStorageCardCardAction",
-            "properties": {
-                "actionLabel": {
-                    "description": "The label that displays as the action menu item.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "AppsDynamiteStorageOnClick",
-                    "description": "The onclick action for this action item."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageCardCardHeader": {
-            "id": "AppsDynamiteStorageCardCardHeader",
-            "properties": {
-                "imageAltText": {
-                    "description": "The alternative text of this image which is used for accessibility.",
-                    "type": "string"
-                },
-                "imageType": {
-                    "description": "The image's type.",
-                    "enum": [
-                        "SQUARE",
-                        "CIRCLE"
-                    ],
-                    "enumDescriptions": [
-                        "Applies no cropping to the image.",
-                        "Applies a circular mask to the image."
-                    ],
-                    "type": "string"
-                },
-                "imageUrl": {
-                    "description": "The URL of the image in the card header.",
-                    "type": "string"
-                },
-                "subtitle": {
-                    "description": "The subtitle of the card header.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "The title of the card header. The title must be specified. The header has a fixed height: if both a title and subtitle are specified, each takes up one line. If only the title is specified, it takes up both lines.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageCardSection": {
-            "description": "A section contains a collection of widgets that are rendered vertically in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there is currently no need for layout properties, for example, float.",
-            "id": "AppsDynamiteStorageCardSection",
-            "properties": {
-                "collapsible": {
-                    "description": "Indicates whether this section is collapsible. If a section is collapsible, the description must be given.",
-                    "type": "boolean"
-                },
-                "header": {
-                    "description": "The header of the section. Formatted text is supported.",
-                    "type": "string"
-                },
-                "uncollapsibleWidgetsCount": {
-                    "description": "The number of uncollapsible widgets. For example, when a section contains five widgets and the `numUncollapsibleWidget` is set to `2`, the first two widgets are always shown and the last three are collapsed as default. The `numUncollapsibleWidget` is taken into account only when collapsible is set to `true`.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "widgets": {
-                    "description": "A section must contain at least 1 widget.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageWidget"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageColumns": {
-            "description": "Represents a Columns widget that displays a single row of columns.",
-            "id": "AppsDynamiteStorageColumns",
-            "properties": {
-                "columnItems": {
-                    "description": "Each card supports up to 2 columns. If the user's screen width is less than or equal to 480 pixels, the second column wraps below the first column.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageColumnsColumn"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageColumnsColumn": {
-            "description": "Represents a Column that consists of widgets stacked vertically.",
-            "id": "AppsDynamiteStorageColumnsColumn",
-            "properties": {
-                "horizontalAlignment": {
-                    "description": "The horizontal alignment of the column.",
-                    "enum": [
-                        "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
-                        "START",
-                        "CENTER",
-                        "END"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified alignment.",
-                        "Alignment to the start position.",
-                        "Alignment to the center position.",
-                        "Alignment to the end position."
-                    ],
-                    "type": "string"
-                },
-                "horizontalSizeStyle": {
-                    "description": "Specifies how the column content is sized horizontally.",
-                    "enum": [
-                        "HORIZONTAL_SIZE_STYLE_UNSPECIFIED",
-                        "FILL_AVAILABLE_SPACE",
-                        "FILL_MINIMUM_SPACE"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Fills up the available horizontal width. Default value if unspecified.",
-                        "Fills up the minimum horizontal width."
-                    ],
-                    "type": "string"
-                },
-                "verticalAlignment": {
-                    "description": "The vertical alignment of the column.",
-                    "enum": [
-                        "VERTICAL_ALIGNMENT_UNSPECIFIED",
-                        "CENTER",
-                        "TOP",
-                        "BOTTOM"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Aligns the widget in the center of the column. Default value if unspecified.",
-                        "Aligns the widget at the top of the column.",
-                        "Aligns the widget at the bottom of the column."
-                    ],
-                    "type": "string"
-                },
-                "widgets": {
-                    "description": "LINT.ThenChange(//depot/google3/google/apps/card/v1/card.proto) Array of widgets included in the column.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageColumnsColumnWidgets"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageColumnsColumnWidgets": {
-            "description": "LINT.IfChange The `column` widget can contain these widgets.",
-            "id": "AppsDynamiteStorageColumnsColumnWidgets",
-            "properties": {
-                "buttonList": {
-                    "$ref": "AppsDynamiteStorageButtonList",
-                    "description": "ButtonList widget."
-                },
-                "dateTimePicker": {
-                    "$ref": "AppsDynamiteStorageDateTimePicker",
-                    "description": "DateTimePicker widget."
-                },
-                "decoratedText": {
-                    "$ref": "AppsDynamiteStorageDecoratedText",
-                    "description": "DecoratedText widget."
-                },
-                "image": {
-                    "$ref": "AppsDynamiteStorageImage",
-                    "description": "Image widget."
-                },
-                "selectionInput": {
-                    "$ref": "AppsDynamiteStorageSelectionInput",
-                    "description": "SelectionInput widget."
-                },
-                "textInput": {
-                    "$ref": "AppsDynamiteStorageTextInput",
-                    "description": "TextInput widget."
-                },
-                "textParagraph": {
-                    "$ref": "AppsDynamiteStorageTextParagraph",
-                    "description": "Text paragraph widget."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageDateTimePicker": {
-            "description": "The widget that lets users to specify a date and time.",
-            "id": "AppsDynamiteStorageDateTimePicker",
-            "properties": {
-                "label": {
-                    "description": "The label for the field that displays to the user.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the text input that's used in formInput, and uniquely identifies this input.",
-                    "type": "string"
-                },
-                "onChangeAction": {
-                    "$ref": "AppsDynamiteStorageAction",
-                    "description": "Triggered when the user clicks Save or Clear from the date/time picker dialog. This is only triggered if the value changed as a result of the Save/Clear operation."
-                },
-                "timezoneOffsetDate": {
-                    "description": "The number representing the time zone offset from UTC, in minutes. If set, the `value_ms_epoch` is displayed in the specified time zone. If not set, it uses the user's time zone setting on the client side.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "type": {
-                    "description": "The type of the date/time picker.",
-                    "enum": [
-                        "DATE_AND_TIME",
-                        "DATE_ONLY",
-                        "TIME_ONLY"
-                    ],
-                    "enumDescriptions": [
-                        "The user can select a date and time.",
-                        "The user can only select a date.",
-                        "The user can only select a time."
-                    ],
-                    "type": "string"
-                },
-                "valueMsEpoch": {
-                    "description": "The value to display as the default value before user input or previous user input. It is represented in milliseconds (Epoch time). For `DATE_AND_TIME` type, the full epoch value is used. For `DATE_ONLY` type, only date of the epoch time is used. For `TIME_ONLY` type, only time of the epoch time is used. For example, you can set epoch time to `3 * 60 * 60 * 1000` to represent 3am.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageDecoratedText": {
-            "description": "A widget that displays text with optional decorations such as a label above or below the text, an icon in front of the text, a selection widget or a button after the text.",
-            "id": "AppsDynamiteStorageDecoratedText",
-            "properties": {
-                "bottomLabel": {
-                    "description": "The formatted text label that shows below the main text.",
-                    "type": "string"
-                },
-                "button": {
-                    "$ref": "AppsDynamiteStorageButton",
-                    "description": "A button that can be clicked to trigger an action."
-                },
-                "endIcon": {
-                    "$ref": "AppsDynamiteStorageIcon",
-                    "description": "An icon displayed after the text."
-                },
-                "icon": {
-                    "$ref": "AppsDynamiteStorageIcon",
-                    "description": "Deprecated in favor of start_icon."
-                },
-                "onClick": {
-                    "$ref": "AppsDynamiteStorageOnClick",
-                    "description": "Only the top and bottom label and content region are clickable."
-                },
-                "startIcon": {
-                    "$ref": "AppsDynamiteStorageIcon",
-                    "description": "The icon displayed in front of the text."
-                },
-                "switchControl": {
-                    "$ref": "AppsDynamiteStorageDecoratedTextSwitchControl",
-                    "description": "A switch widget can be clicked to change its state or trigger an action."
-                },
-                "text": {
-                    "description": "Required. The main widget formatted text. See Text formatting for details.",
-                    "type": "string"
-                },
-                "topLabel": {
-                    "description": "The formatted text label that shows above the main text.",
-                    "type": "string"
-                },
-                "wrapText": {
-                    "description": "The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageDecoratedTextSwitchControl": {
-            "id": "AppsDynamiteStorageDecoratedTextSwitchControl",
-            "properties": {
-                "controlType": {
-                    "description": "The control type, either switch or checkbox.",
-                    "enum": [
-                        "SWITCH",
-                        "CHECKBOX",
-                        "CHECK_BOX"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Deprecated in favor of `CHECK_BOX`.",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the switch widget that's used in formInput.",
-                    "type": "string"
-                },
-                "onChangeAction": {
-                    "$ref": "AppsDynamiteStorageAction",
-                    "description": "The action when the switch state is changed."
-                },
-                "selected": {
-                    "description": "If the switch is selected.",
-                    "type": "boolean"
-                },
-                "value": {
-                    "description": "The value is what is passed back in the callback.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageDivider": {
-            "description": "A divider that appears in between widgets.",
-            "id": "AppsDynamiteStorageDivider",
-            "properties": {},
-            "type": "object"
-        },
-        "AppsDynamiteStorageGrid": {
-            "description": "Represents a Grid widget that displays items in a configurable grid layout.",
-            "id": "AppsDynamiteStorageGrid",
-            "properties": {
-                "borderStyle": {
-                    "$ref": "AppsDynamiteStorageBorderStyle",
-                    "description": "The border style to apply to each grid item."
-                },
-                "columnCount": {
-                    "description": "The number of columns to display in the grid. A default value is used if this field isn't specified, and that default value is different depending on where the grid is shown (dialog versus companion).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "items": {
-                    "description": "The items to display in the grid.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageGridGridItem"
-                    },
-                    "type": "array"
-                },
-                "onClick": {
-                    "$ref": "AppsDynamiteStorageOnClick",
-                    "description": "This callback is reused by each individual grid item, but with the item's identifier and index in the items list added to the callback's parameters."
-                },
-                "title": {
-                    "description": "The text that displays in the grid header.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageGridGridItem": {
-            "description": "Represents a single item in the grid layout.",
-            "id": "AppsDynamiteStorageGridGridItem",
-            "properties": {
-                "id": {
-                    "description": "A user-specified identifier for this grid item. This identifier is returned in the parent Grid's onClick callback parameters.",
-                    "type": "string"
-                },
-                "image": {
-                    "$ref": "AppsDynamiteStorageImageComponent",
-                    "description": "The image that displays in the grid item."
-                },
-                "layout": {
-                    "description": "The layout to use for the grid item.",
-                    "enum": [
-                        "GRID_ITEM_LAYOUT_UNSPECIFIED",
-                        "TEXT_BELOW",
-                        "TEXT_ABOVE"
-                    ],
-                    "enumDescriptions": [
-                        "No layout specified.",
-                        "The title and subtitle are shown below the grid item's image.",
-                        "The title and subtitle are shown above the grid item's image."
-                    ],
-                    "type": "string"
-                },
-                "subtitle": {
-                    "description": "The grid item's subtitle.",
-                    "type": "string"
-                },
-                "textAlignment": {
-                    "description": "The horizontal alignment of the grid item's text.",
-                    "enum": [
-                        "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
-                        "START",
-                        "CENTER",
-                        "END"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified alignment.",
-                        "Alignment to the start position.",
-                        "Alignment to the center position.",
-                        "Alignment to the end position."
-                    ],
-                    "type": "string"
-                },
-                "title": {
-                    "description": "The grid item's title.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageIcon": {
-            "id": "AppsDynamiteStorageIcon",
-            "properties": {
-                "altText": {
-                    "description": "The description of the icon, used for accessibility. The default value is provided if you don't specify one.",
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "description": "The icon specified by a URL.",
-                    "type": "string"
-                },
-                "imageType": {
-                    "description": "The crop style applied to the image. In some cases, applying a `CIRCLE` crop causes the image to be drawn larger than a standard icon.",
-                    "enum": [
-                        "SQUARE",
-                        "CIRCLE"
-                    ],
-                    "enumDescriptions": [
-                        "Applies no cropping to the image.",
-                        "Applies a circular mask to the image."
-                    ],
-                    "type": "string"
-                },
-                "knownIcon": {
-                    "description": "The icon specified by the string name of a list of known icons",
-                    "type": "string"
-                },
-                "materialIcon": {
-                    "$ref": "AppsDynamiteStorageMaterialIcon",
-                    "description": "Display one of the [Google Material Icons](https://fonts.google.com/icons). For example, to display a [check box icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048), use \"material_icon\": { \"name\": \"check_box\" }"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageImage": {
-            "description": "An image that is specified by a URL and can have an onClick action.",
-            "id": "AppsDynamiteStorageImage",
-            "properties": {
-                "altText": {
-                    "description": "The alternative text of this image, used for accessibility.",
-                    "type": "string"
-                },
-                "imageUrl": {
-                    "description": "An image URL.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "AppsDynamiteStorageOnClick"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageImageComponent": {
-            "id": "AppsDynamiteStorageImageComponent",
-            "properties": {
-                "altText": {
-                    "description": "The accessibility label for the image.",
-                    "type": "string"
-                },
-                "borderStyle": {
-                    "$ref": "AppsDynamiteStorageBorderStyle",
-                    "description": "The border style to apply to the image."
-                },
-                "cropStyle": {
-                    "$ref": "AppsDynamiteStorageImageCropStyle",
-                    "description": "The crop style to apply to the image."
-                },
-                "imageUri": {
-                    "description": "The image URL.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageImageCropStyle": {
-            "description": "Represents the crop style applied to an image.",
-            "id": "AppsDynamiteStorageImageCropStyle",
-            "properties": {
-                "aspectRatio": {
-                    "description": "The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "type": {
-                    "description": "The crop type.",
-                    "enum": [
-                        "IMAGE_CROP_TYPE_UNSPECIFIED",
-                        "SQUARE",
-                        "CIRCLE",
-                        "RECTANGLE_CUSTOM",
-                        "RECTANGLE_4_3"
-                    ],
-                    "enumDescriptions": [
-                        "No value specified.",
-                        "Applies a square crop.",
-                        "Applies a circular crop.",
-                        "Applies a rectangular crop with a custom aspect ratio.",
-                        "Applies a rectangular crop with a 4:3 aspect ratio."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageMaterialIcon": {
-            "description": "A [Google Font Icon](https://fonts.google.com/icons), which includes over 2500+ options. For example, to display a [check box icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048) with customized weight and grade, write { \"name\": \"check_box\", \"fill\": true, \"weight\": 300, \"grade\": -25 }",
-            "id": "AppsDynamiteStorageMaterialIcon",
-            "properties": {
-                "fill": {
-                    "description": "Whether it renders a filled icon. Default value is false. See Customization in [Google Font Icon](https://fonts.google.com/icons) for details.",
-                    "type": "boolean"
-                },
-                "grade": {
-                    "description": "Weight and grade affect a symbol’s thickness. Adjustments to grade are more granular than adjustments to weight and have a small impact on the size of the symbol. Choose from {-25, 0, 200}. If absent, default value is 0. If any other value is specified, a broken image icon will be displayed. See Customization in [Google Font Icon](https://fonts.google.com/icons) for details.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "name": {
-                    "description": "The icon name defined in the [Google Material Icon](https://fonts.google.com/icons) in snake_case. e.g. \"check_box\". Any invalid name will be trimmed as empty string result in the icon falied to render.",
-                    "type": "string"
-                },
-                "weight": {
-                    "description": "The stroke weight of the icon. Choose from {100, 200, 300, 400, 500, 600, 700}. If absent, default value is 400. If any other value is specified, a broken image icon will be displayed. See Customization in [Google Font Icon](https://fonts.google.com/icons) for details.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageOnClick": {
-            "id": "AppsDynamiteStorageOnClick",
-            "properties": {
-                "action": {
-                    "$ref": "AppsDynamiteStorageAction",
-                    "description": "If specified, an action is triggered by this onClick."
-                },
-                "hostAppAction": {
-                    "$ref": "HostAppActionMarkup",
-                    "description": "Triggers host app action on click directly without invoking form actions. This is currently not available to end-users and is used internal only."
-                },
-                "openDynamicLinkAction": {
-                    "$ref": "AppsDynamiteStorageAction",
-                    "description": "An add-on triggers this action when the action needs to open a link. This differs from the open_link above in that this needs to talk to server to get the link. Thus some preparation work is required for web client to do before the open link action response comes back."
-                },
-                "openLink": {
-                    "$ref": "AppsDynamiteStorageOpenLink",
-                    "description": "If specified, this onClick triggers an open link action."
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageOpenLink": {
-            "id": "AppsDynamiteStorageOpenLink",
-            "properties": {
-                "appUri": {
-                    "$ref": "AppsDynamiteStorageOpenLinkAppUri",
-                    "description": "Represents the platform specific uri/intent to open on each client. For example: A companion_url will open in a companion window on the web. An iOS URL and android intent will open in the corresponding hosting apps. If these platform specific URLs can't be handled correctly, i.e. if the companion isn't supported on web and the hosting apps aren't available on the mobile platforms then the `uri` will open in a new browser window on all the platforms."
-                },
-                "onClose": {
-                    "enum": [
-                        "NOTHING",
-                        "RELOAD"
-                    ],
-                    "enumDescriptions": [
-                        "Doesn’t reload the card after the child window closes. Reloads the card after the child window closes. If used in conjunction with [OpenAs.OVERLAY](/workspace/add-ons/reference/rpc/google.apps.card.v1#openas), the child window acts as a modal dialog and the main card is blocked until the child window closes.",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "openAs": {
-                    "enum": [
-                        "FULL_SIZE",
-                        "OVERLAY"
-                    ],
-                    "enumDescriptions": [
-                        "The link opens as a full size window (if that's the frame used by the client.",
-                        "The link opens as an overlay, such as a pop-up."
-                    ],
-                    "type": "string"
-                },
-                "url": {
-                    "description": "The URL to open.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageOpenLinkAppUri": {
-            "description": "Represents the platform specific uri/intent to open for each client.",
-            "id": "AppsDynamiteStorageOpenLinkAppUri",
-            "properties": {
-                "androidIntent": {
-                    "$ref": "AppsDynamiteStorageOpenLinkAppUriIntent",
-                    "description": "An intent object to be opened in the corresponding android hosting app."
-                },
-                "companionUri": {
-                    "description": "A companion uri string to be opened in the chat companion window. on the web.",
-                    "type": "string"
-                },
-                "iosUri": {
-                    "description": "A uri string to be opened in the corresponding iOS hosting app.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageOpenLinkAppUriIntent": {
-            "description": "Android intent.",
-            "id": "AppsDynamiteStorageOpenLinkAppUriIntent",
-            "properties": {
-                "extraData": {
-                    "description": "A list of extra data for the android intent. For example, for a calendar event edit intent, the event title information can be passed as extra data.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageOpenLinkAppUriIntentExtraData"
-                    },
-                    "type": "array"
-                },
-                "intentAction": {
-                    "description": "An android intent action string for the {@link android.content.Intent} object. For example: for the view intent action type, a valid value will be android.content.Intent.ACTION_VIEW.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageOpenLinkAppUriIntentExtraData": {
-            "description": "Extra data for an android intent. Valid keys are defined in the hosting app contract.",
-            "id": "AppsDynamiteStorageOpenLinkAppUriIntentExtraData",
-            "properties": {
-                "key": {
-                    "description": "A key for the intent extra data.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "Value for the given extra data key.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageSelectionInput": {
-            "description": "A widget that creates a UI item (for example, a drop-down list) with options for users to select.",
-            "id": "AppsDynamiteStorageSelectionInput",
-            "properties": {
-                "items": {
-                    "items": {
-                        "$ref": "AppsDynamiteStorageSelectionInputSelectionItem"
-                    },
-                    "type": "array"
-                },
-                "label": {
-                    "description": "The label displayed ahead of the switch control.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the text input which is used in formInput.",
-                    "type": "string"
-                },
-                "onChangeAction": {
-                    "$ref": "AppsDynamiteStorageAction",
-                    "description": "If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button."
-                },
-                "type": {
-                    "enum": [
-                        "CHECK_BOX",
-                        "RADIO_BUTTON",
-                        "SWITCH",
-                        "DROPDOWN",
-                        "MULTI_SELECT"
-                    ],
-                    "enumDescriptions": [
-                        "The selection type is a checkbox.",
-                        "The selection type is a radio button.",
-                        "The selection type is a switch.",
-                        "The selection type is a dropdown.",
-                        "The selection type is multi-select"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageSelectionInputSelectionItem": {
-            "description": "The item in the switch control. A radio button, at most one of the items is selected.",
-            "id": "AppsDynamiteStorageSelectionInputSelectionItem",
-            "properties": {
-                "selected": {
-                    "description": "If more than one item is selected for `RADIO_BUTTON` and `DROPDOWN`, the first selected item is treated as selected and the ones after are ignored.",
-                    "type": "boolean"
-                },
-                "text": {
-                    "description": "The text to be displayed.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value associated with this item. The client should use this as a form input value.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageSuggestions": {
-            "description": "A container wrapping elements necessary for showing suggestion items used in text input autocomplete.",
-            "id": "AppsDynamiteStorageSuggestions",
-            "properties": {
-                "items": {
-                    "description": "A list of suggestions items which will be used in are used in autocomplete.",
-                    "items": {
-                        "$ref": "AppsDynamiteStorageSuggestionsSuggestionItem"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageSuggestionsSuggestionItem": {
-            "description": "A suggestion item. Only supports text for now.",
-            "id": "AppsDynamiteStorageSuggestionsSuggestionItem",
-            "properties": {
-                "text": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageTextInput": {
-            "description": "A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions.",
-            "id": "AppsDynamiteStorageTextInput",
-            "properties": {
-                "autoCompleteAction": {
-                    "$ref": "AppsDynamiteStorageAction",
-                    "description": "The refresh function that returns suggestions based on the user's input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items."
-                },
-                "hintText": {
-                    "description": "The hint text.",
-                    "type": "string"
-                },
-                "initialSuggestions": {
-                    "$ref": "AppsDynamiteStorageSuggestions",
-                    "description": "The initial suggestions made before any user input."
-                },
-                "label": {
-                    "description": "At least one of label and hintText must be specified.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the text input which is used in formInput.",
-                    "type": "string"
-                },
-                "onChangeAction": {
-                    "$ref": "AppsDynamiteStorageAction",
-                    "description": "The onChange action, for example, invoke a function."
-                },
-                "type": {
-                    "description": "The style of the text, for example, a single line or multiple lines.",
-                    "enum": [
-                        "SINGLE_LINE",
-                        "MULTIPLE_LINE"
-                    ],
-                    "enumDescriptions": [
-                        "The text is put into a single line.",
-                        "The text is put into multiple lines."
-                    ],
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The default value when there is no input from the user.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageTextParagraph": {
-            "description": "A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting\") for details.",
-            "id": "AppsDynamiteStorageTextParagraph",
-            "properties": {
-                "text": {
-                    "description": "The text that's shown in the widget.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteStorageWidget": {
-            "description": "A widget is a UI element that presents texts, images, etc.",
-            "id": "AppsDynamiteStorageWidget",
-            "properties": {
-                "buttonList": {
-                    "$ref": "AppsDynamiteStorageButtonList",
-                    "description": "A list of buttons. For example, the following JSON creates two buttons. The first is a filled text button and the second is an image button that opens a link: ``` \"buttonList\": { \"buttons\": [ \"button\": { \"text\": \"Edit\", \"Color\": { \"Red\": 255 \"Green\": 255 \"Blue\": 255 } \"disabled\": true }, \"button\": { \"icon\": { \"knownIcon\": \"INVITE\" \"altText\": \"check calendar\" }, \"onClick\": { \"openLink\": { \"url\": \"https://example.com/calendar\" } } }, ] } ```"
-                },
-                "columns": {
-                    "$ref": "AppsDynamiteStorageColumns",
-                    "description": "Displays a single row of columns with widgets stacked vertically in each column. For example, the following JSON creates a 2 column widget each containing a single item. ``` \"columns\": { \"wrapStyle\": \"WRAP\", \"columnItems\": [ { \"horizontalSizeStyle\": \"FILL_AVAILABLE_SPACE\", \"horizontalAlignment\": \"CENTER\", \"verticalAlignment\" : \"CENTER\", \"widgets\": [ { \"textParagraph\": { \"text\": \"First column text paragraph\", } } ] }, { \"horizontalSizeStyle\": \"FILL_AVAILABLE_SPACE\", \"horizontalAlignment\": \"CENTER\", \"verticalAlignment\" : \"CENTER\", \"widgets\": [ { \"textParagraph\": { \"text\": \"Second column text paragraph\", } } ] }, ] } } ```"
-                },
-                "dateTimePicker": {
-                    "$ref": "AppsDynamiteStorageDateTimePicker",
-                    "description": "Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` \"date_time_picker\": { \"name\": \"appointment_time\", \"label\": \"Book your appointment at:\", \"type\": \"DateTimePickerType.DATE_AND_TIME\", \"valueMsEpoch\": \"796435200000\" } ```"
-                },
-                "decoratedText": {
-                    "$ref": "AppsDynamiteStorageDecoratedText",
-                    "description": "Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` \"decoratedText\": { \"icon\": { \"knownIcon\": \"EMAIL\" }, \"topLabel\": \"Email Address\", \"content\": \"heba.salam@example.com\", \"bottomLabel\": \"This is a new Email address!\", \"switchWidget\": { \"name\": \"has_send_welcome_email_to_heba_salam\", \"selected\": false, \"controlType\": \"ControlType.CHECKBOX\" } } ```"
-                },
-                "divider": {
-                    "$ref": "AppsDynamiteStorageDivider",
-                    "description": "Displays a divider. For example, the following JSON creates a divider: ``` \"divider\": { } ```"
-                },
-                "grid": {
-                    "$ref": "AppsDynamiteStorageGrid",
-                    "description": "Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` \"grid\": { \"title\": \"A fine collection of items\", \"numColumns\": 2, \"borderStyle\": { \"type\": \"STROKE\", \"cornerRadius\": 4.0 }, \"items\": [ \"image\": { \"imageUri\": \"https://www.example.com/image.png\", \"cropStyle\": { \"type\": \"SQUARE\" }, \"borderStyle\": { \"type\": \"STROKE\" } }, \"title\": \"An item\", \"textAlignment\": \"CENTER\" ], \"onClick\": { \"openLink\": { \"url\":\"https://www.example.com\" } } } ```"
-                },
-                "horizontalAlignment": {
-                    "description": "The horizontal alignment of this widget.",
-                    "enum": [
-                        "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
-                        "START",
-                        "CENTER",
-                        "END"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified alignment.",
-                        "Alignment to the start position.",
-                        "Alignment to the center position.",
-                        "Alignment to the end position."
-                    ],
-                    "type": "string"
-                },
-                "image": {
-                    "$ref": "AppsDynamiteStorageImage",
-                    "description": "Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` \"image\": { \"imageUrl\": \"https://example.com/heba_salam.png\" \"altText\": \"Avatar for Heba Salam\" } ```"
-                },
-                "selectionInput": {
-                    "$ref": "AppsDynamiteStorageSelectionInput",
-                    "description": "Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` \"switchControl\": { \"name\": \"size\", \"label\": \"Size\" \"type\": \"SelectionType.DROPDOWN\", \"items\": [ { \"text\": \"S\", \"value\": \"small\", \"selected\": false }, { \"text\": \"M\", \"value\": \"medium\", \"selected\": true }, { \"text\": \"L\", \"value\": \"large\", \"selected\": false }, { \"text\": \"XL\", \"value\": \"extra_large\", \"selected\": false } ] } ```"
-                },
-                "textInput": {
-                    "$ref": "AppsDynamiteStorageTextInput",
-                    "description": "Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` \"textInput\": { \"name\": \"mailing_address\", \"label\": \"Mailing Address\" } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` \"textInput\": { \"name\": \"preferred_programing_language\", \"label\": \"Preferred Language\", \"initialSuggestions\": { \"items\": [ { \"text\": \"C++\" }, { \"text\": \"Java\" }, { \"text\": \"JavaScript\" }, { \"text\": \"Python\" } ] } } ```"
-                },
-                "textParagraph": {
-                    "$ref": "AppsDynamiteStorageTextParagraph",
-                    "description": "Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` \"textParagraph\": { \"text\": \" *bold text*\" } ```"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteV1ApiCompatV1Action": {
-            "description": "Interactive objects inside a message. Documentation: - https://api.slack.com/docs/message-buttons",
-            "id": "AppsDynamiteV1ApiCompatV1Action",
-            "properties": {
-                "confirm": {
-                    "$ref": "AppsDynamiteV1ApiCompatV1ActionConfirm",
-                    "description": "Confirmation dialog config."
-                },
-                "name": {
-                    "description": "Unique identifier for this action.",
-                    "type": "string"
-                },
-                "style": {
-                    "description": "Button style (\"default\", \"primary\", or \"danger\").",
-                    "type": "string"
-                },
-                "text": {
-                    "description": "User-facing label for the action.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Action type - currently only \"button\".",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "Payload for this action. Will be sent to the action handler along with name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteV1ApiCompatV1ActionConfirm": {
-            "description": "Confirmation dialog config.",
-            "id": "AppsDynamiteV1ApiCompatV1ActionConfirm",
-            "properties": {
-                "dismiss_text": {
-                    "description": "\"Cancel\" button label.",
-                    "type": "string"
-                },
-                "ok_text": {
-                    "description": "\"OK\" button label.",
-                    "type": "string"
-                },
-                "text": {
-                    "description": "Confirmation dialog body text.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Confirmation dialog title.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteV1ApiCompatV1Attachment": {
-            "description": "Richly formatted attachments. Documentation: - https://api.slack.com/docs/message-attachments",
-            "id": "AppsDynamiteV1ApiCompatV1Attachment",
-            "properties": {
-                "actions": {
-                    "description": "Array of actions (currently only buttons).",
-                    "items": {
-                        "$ref": "AppsDynamiteV1ApiCompatV1Action"
-                    },
-                    "type": "array"
-                },
-                "attachment_type": {
-                    "description": "Undocumented - used in interactive button examples. The only valid value appears to be \"default\".",
-                    "type": "string"
-                },
-                "author_icon": {
-                    "description": "Avatar URL for the user.",
-                    "type": "string"
-                },
-                "author_link": {
-                    "description": "URL that the user name should link to.",
-                    "type": "string"
-                },
-                "author_name": {
-                    "description": "User name to display as the author of the message.",
-                    "type": "string"
-                },
-                "callback_id": {
-                    "description": "Unique identifier for the collection of buttons within this attachment. Will be sent back to the action handler URL when a button is clicked.",
-                    "type": "string"
-                },
-                "color": {
-                    "description": "A color \"bar\" to display to the left of the attachment.",
-                    "type": "string"
-                },
-                "fallback": {
-                    "description": "Fallback plain-text string for clients that don't support attachments.",
-                    "type": "string"
-                },
-                "fields": {
-                    "description": "Columns of text inside the attachment body.",
-                    "items": {
-                        "$ref": "AppsDynamiteV1ApiCompatV1Field"
-                    },
-                    "type": "array"
-                },
-                "footer": {
-                    "description": "A string displayed at the bottom of the attachment.",
-                    "type": "string"
-                },
-                "footer_icon": {
-                    "description": "Avatar URL displayed to the left of the footer.",
-                    "type": "string"
-                },
-                "image_url": {
-                    "description": "URL of an image to display in an image chip.",
-                    "type": "string"
-                },
-                "mrkdwn_in": {
-                    "description": "List of fields to apply formatting to.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "pretext": {
-                    "description": "A string to show above the attachment.",
-                    "type": "string"
-                },
-                "text": {
-                    "description": "Main text.",
-                    "type": "string"
-                },
-                "thumb_url": {
-                    "description": "URL of a thumbnail image to display to the right of the attachment body.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Title string of this attachment.",
-                    "type": "string"
-                },
-                "title_link": {
-                    "description": "URL that the title string should link to.",
-                    "type": "string"
-                },
-                "ts": {
-                    "description": "UNIX timestamp of the attachment.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AppsDynamiteV1ApiCompatV1Field": {
-            "description": "A column of text in an attachment. Documentation: - https://api.slack.com/docs/message-attachments",
-            "id": "AppsDynamiteV1ApiCompatV1Field",
-            "properties": {
-                "short": {
-                    "description": "Whether the field can be shown side-by-side with another field.",
-                    "type": "boolean"
-                },
-                "title": {
-                    "description": "The heading text, shown in bold.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The text value of the field.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupAddAttachmentsActionMarkup": {
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupAddAttachmentsActionMarkup",
-            "properties": {
-                "addonAttachments": {
-                    "items": {
-                        "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupAddAttachmentsActionMarkupAddonAttachment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupAddAttachmentsActionMarkupAddonAttachment": {
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupAddAttachmentsActionMarkupAddonAttachment",
-            "properties": {
-                "iconUrl": {
-                    "description": "Link to the resource's icon.",
-                    "type": "string"
-                },
-                "mimeType": {
-                    "description": "MIME type of the content in resource_url.",
-                    "type": "string"
-                },
-                "resourceUrl": {
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Title of the attachment.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkup": {
-            "description": "Markup that defines conference data associated to a Google Calendar event.",
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkup",
-            "properties": {
-                "conferenceId": {
-                    "description": "Unique identifier for this conference data. Maximum 512 characters long.",
-                    "type": "string"
-                },
-                "conferenceSolutionId": {
-                    "description": "An identifier of the conferencing solution. Must match a value from the deployment's `calendar.conferenceSolution.id` field.",
-                    "type": "string"
-                },
-                "entryPoints": {
-                    "description": "Entry points to the conference. Maximum 300 entry points are allowed.",
-                    "items": {
-                        "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupEntryPointMarkup"
-                    },
-                    "type": "array"
-                },
-                "error": {
-                    "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupError",
-                    "description": "If set, it means an error occurred during conference creation."
-                },
-                "note": {
-                    "description": "Additional notes (such as instructions from the administrator, legal notices) to display to the user. Can contain HTML. Max length 2048 characters.",
-                    "type": "string"
-                },
-                "parameters": {
-                    "description": "Additional add-on parameters. Maximum 300 parameters are allowed.",
-                    "items": {
-                        "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupParameter"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupEntryPointMarkup": {
-            "description": "A way to join the conference.",
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupEntryPointMarkup",
-            "properties": {
-                "accessCode": {
-                    "description": "An access code for accessing the conference. Maximum 128 characters long.",
-                    "type": "string"
-                },
-                "features": {
-                    "description": "Features of the entry point, such as being toll or toll-free. One entry point can have multiple features.",
-                    "items": {
-                        "enum": [
-                            "UNKNOWN_FEATURE",
-                            "TOLL",
-                            "TOLL_FREE"
-                        ],
-                        "enumDescriptions": [
-                            "Unknown feature.",
-                            "Applies to `PHONE` entry point. A call to a toll number is charged to the calling party. A number can't be toll and toll-free at the same time.",
-                            "Applies to `PHONE` entry point. For the calling party, a call to a toll-free number is free of charge. A number can't be toll and toll-free at the same time."
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "label": {
-                    "description": "The label of the entry point to display to the user. Maximum 512 characters long.",
-                    "type": "string"
-                },
-                "meetingCode": {
-                    "description": "A meeting code for accessing the conference. Maximum 128 characters long.",
-                    "type": "string"
-                },
-                "passcode": {
-                    "description": "A passcode for accessing the conference. Maximum 128 characters long.",
-                    "type": "string"
-                },
-                "password": {
-                    "description": "A password for accessing the conference. Maximum 128 characters long.",
-                    "type": "string"
-                },
-                "pin": {
-                    "description": "A PIN for accessing the conference. Maximum 128 characters long.",
-                    "type": "string"
-                },
-                "regionCode": {
-                    "description": "The CLDR/ISO 3166 region code for the country associated with this entry point. Applicable only to `Type.PHONE`.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The type of the entry point. Required.",
-                    "enum": [
-                        "UNKNOWN",
-                        "VIDEO",
-                        "PHONE",
-                        "MORE",
-                        "SIP"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown conference type.",
-                        "A video conference.",
-                        "A phone conference.",
-                        "Used to provide a link to further conference joining information.",
-                        "A conference using [Session Initiation Protocol](https://en.wikipedia.org/wiki/Session_Initiation_Protocol)"
-                    ],
-                    "type": "string"
-                },
-                "uri": {
-                    "description": "A URI for joining the conference. Supports tel: and http(s): and should be at most 1300 characters long. Required.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupError": {
-            "description": "Represents an error that occurred during conference creation.",
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupError",
-            "properties": {
-                "authenticationUrl": {
-                    "description": "If the error type is `AUTHENTICATION`, the add-on can provide a URL allowing users to log in. Maximum 1300 characters long.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The type of error. Required.",
-                    "enum": [
-                        "UNKNOWN",
-                        "AUTHENTICATION",
-                        "TEMPORARY",
-                        "PERMANENT",
-                        "PERMISSION_DENIED",
-                        "CONFERENCE_SOLUTION_FORBIDDEN"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown error.",
-                        "An authentication error.",
-                        "A temporary error.",
-                        "A permanent error.",
-                        "The user isn't allowed to perform some action in the third-party conferencing system.",
-                        "The user isn't allowed to use the selected conference solution (but might be allowed to use other solutions offered by the add-on)."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupParameter": {
-            "description": "Solution-specific parameters that are persisted with the event data and, if an update or delete is needed, are passed to the add-on. For example: `[{key: 'sessionKey', value: '123'}, {key: 'meetingId', value: '456'}]`",
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkupParameter",
-            "properties": {
-                "key": {
-                    "description": "The key of the parameter. Maximum 50 characters long. Required.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value of the parameter. Maximum 1024 characters long. Required.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupEditAttendeesActionMarkup": {
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupEditAttendeesActionMarkup",
-            "properties": {
-                "addAttendeeEmails": {
-                    "description": "A list of attendees to add to the Google Calendar event.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppsExtensionsMarkupCalendarClientActionMarkupEditConferenceDataActionMarkup": {
-            "id": "AppsExtensionsMarkupCalendarClientActionMarkupEditConferenceDataActionMarkup",
-            "properties": {
-                "conferenceData": {
-                    "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupConferenceDataMarkup",
-                    "description": "The conference data to add to the Google Calendar event."
-                }
-            },
-            "type": "object"
-        },
-        "Attachment": {
-            "description": "Attachments that follow the message text.",
-            "id": "Attachment",
-            "properties": {
-                "addOnData": {
-                    "$ref": "GoogleChatV1ContextualAddOnMarkup",
-                    "description": "Revised version of Gmail AddOn attachment approved by API design review."
-                },
-                "appId": {
-                    "$ref": "UserId",
-                    "description": "The userId for the bot/app that created this data, to be used for attribution of attachments when the attachment was not created by the message sender."
-                },
-                "attachmentId": {
-                    "description": "To identify an attachment within repeated in a message",
-                    "type": "string"
-                },
-                "cardAddOnData": {
-                    "$ref": "AppsDynamiteStorageCard",
-                    "description": "Card AddOn attachment with the possibility for specifying editable widgets."
-                },
-                "componentSearchInfo": {
-                    "$ref": "AppsDynamiteSharedMessageComponentSearchInfo",
-                    "description": "Contains additional metadata that further enhance the annotation when it is returned as part of search response. For example, this can be used to define how the attachment matches the search. Information can be used to highlight in rendering search results. The following are the different attachment text fields that are covered by this field: 1. ContextualAddOn.Card.CardHeader.title 2. CardItem.CardItemHeader.title"
-                },
-                "deprecatedAddOnData": {
-                    "$ref": "ContextualAddOnMarkup",
-                    "description": "Deprecated version of Gmail AddOn attachment."
-                },
-                "slackData": {
-                    "$ref": "AppsDynamiteV1ApiCompatV1Attachment",
-                    "description": "Slack attachment."
-                },
-                "slackDataImageUrlHeight": {
-                    "description": "The height of image url as fetched by fife. This field is asynchronously filled.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Attribute": {
-            "description": "An Attribute is a piece of data attached an Item. Attributes are opaque to the Starbox and have no effect on, nor are they effected by, message storage, indexing, or search. ",
-            "id": "Attribute",
-            "properties": {
-                "name": {
-                    "description": "The name of the attribute. Required - If a write is attempted with an empty string, the server will return an error.",
-                    "type": "string"
-                },
-                "value": {
-                    "$ref": "CaribouAttributeValue"
-                }
-            },
-            "type": "object"
-        },
-        "AttributeRemoved": {
-            "description": "An attribute was deleted from some (subset of the) messages in this thread.",
-            "id": "AttributeRemoved",
-            "properties": {
-                "attributeId": {
-                    "type": "string"
-                },
-                "messageKeys": {
-                    "items": {
-                        "$ref": "MultiKey"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AttributeSet": {
-            "description": "An attribute was added to some (subset of the) messages in this thread.",
-            "id": "AttributeSet",
-            "properties": {
-                "attributeId": {
-                    "type": "string"
-                },
-                "attributeValue": {
-                    "description": "The serialized attribute_value as persisted in the storage layer. The application is responsible for deserializing it to an Attribute.Value if appropriate.",
-                    "format": "byte",
+                    "description": "[Optional] Url of the action.",
                     "type": "string"
-                },
-                "messageKeys": {
-                    "items": {
-                        "$ref": "MultiKey"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Attributes": {
-            "id": "Attributes",
-            "properties": {
-                "attribute": {
-                    "items": {
-                        "$ref": "Attribute"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -5654,90 +2138,38 @@
             },
             "type": "object"
         },
-        "AuthorizedItemId": {
-            "description": "A combination of an identifier for a Drive resource (e.g. file, folder, or drive) and any secrets needed to access it. The secrets should never be logged, and this proto annotates those secret fields to ensure that they are not. Clients are encouraged to use this proto rather than defining their own, to ensure that secrets are correctly annotated.",
-            "id": "AuthorizedItemId",
+        "BackgroundColoredText": {
+            "id": "BackgroundColoredText",
             "properties": {
-                "id": {
-                    "description": "Serialized ID of the Drive resource",
+                "backgroundColor": {
+                    "description": "[Optional] Color of the background. The text color can change depending on the selected background color, and the client does not have control over this. If missing, the background will be WHITE.",
+                    "enum": [
+                        "UNKNOWN_COLOR",
+                        "WHITE",
+                        "YELLOW",
+                        "ORANGE",
+                        "GREEN",
+                        "BLUE",
+                        "GREY"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
                     "type": "string"
                 },
-                "resourceKey": {
-                    "description": "Resource key of the Drive item. This field should be unset if, depending on the context, the item does not have a resource key, or if none was specified. This must never be logged.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AutoComplete": {
-            "id": "AutoComplete",
-            "properties": {
-                "items": {
-                    "items": {
-                        "$ref": "AutoCompleteItem"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AutoCompleteItem": {
-            "id": "AutoCompleteItem",
-            "properties": {
                 "text": {
+                    "description": "[Required] The text to display.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
-        "BabelMessageProps": {
-            "description": "Container for Babel (Hangouts Classic) only message properties. The properties here will not be consumed by Dynamite clients. They are relevant only for Hangouts Classic.",
-            "id": "BabelMessageProps",
-            "properties": {
-                "clientGeneratedId": {
-                    "description": "Babel clients locally generate this ID to dedupe against the async fanout.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "contentExtension": {
-                    "$ref": "ChatContentExtension",
-                    "description": "Stores additional Babel-specific properties (such as event metadata)."
-                },
-                "deliveryMedium": {
-                    "$ref": "DeliveryMedium",
-                    "description": "Stores the delivery source of messages (such as phone number for SMS)."
-                },
-                "eventId": {
-                    "description": "Primary identifier used by Hangouts Classic for its events (messages).",
-                    "type": "string"
-                },
-                "messageContent": {
-                    "$ref": "ChatConserverMessageContent",
-                    "description": "Stores message segments (text content) and attachments (media URLs)."
-                },
-                "wasUpdatedByBackfill": {
-                    "description": "Whether or not these message properties were backfilled by go/dinnertrain.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "BabelPlaceholderMetadata": {
-            "description": "Annotation metadata for Babel-only items that signals which type of placeholder message should be displayed in Babel clients.",
-            "id": "BabelPlaceholderMetadata",
-            "properties": {
-                "deleteMetadata": {
-                    "$ref": "DeleteMetadata"
-                },
-                "editMetadata": {
-                    "$ref": "EditMetadata"
-                },
-                "hangoutVideoMetadata": {
-                    "$ref": "HangoutVideoEventMetadata"
-                }
-            },
-            "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",
@@ -5760,821 +2192,6 @@
             },
             "type": "object"
         },
-        "BorderStyle": {
-            "description": "Represents a complete border style that can be applied to widgets.",
-            "id": "BorderStyle",
-            "properties": {
-                "cornerRadius": {
-                    "description": "The corner radius for the border.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "strokeColor": {
-                    "description": "The colors to use when the type is STROKE.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The border type.",
-                    "enum": [
-                        "BORDER_TYPE_NOT_SET",
-                        "NO_BORDER",
-                        "STROKE"
-                    ],
-                    "enumDescriptions": [
-                        "No value specified.",
-                        "No border.",
-                        "Outline."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BotInfo": {
-            "description": "Bot-specific profile information.",
-            "id": "BotInfo",
-            "properties": {
-                "appAllowlistStatus": {
-                    "enum": [
-                        "UNSPECIFIED_STATUS",
-                        "ALLOWED",
-                        "ALL_APPS_DISABLED_BY_ADMIN",
-                        "APP_NOT_ALLOWLISTED_BY_ADMIN"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "For both ALL_APPS_DISABLED_BY_ADMIN and APP_NOT_ALLOWLISTED_BY_ADMIN, the app should still be visible in the catalog, but usage of the app will be disabled. Indicates that all apps have been disabled by the dasher admin.",
-                        "Indicates that the customer is using allowlisting, but that the bot is not allowlisted."
-                    ],
-                    "type": "string"
-                },
-                "appId": {
-                    "$ref": "AppId",
-                    "description": "Identifier of the application associated with the bot."
-                },
-                "botAvatarUrl": {
-                    "description": "URL for the avatar picture of the User in dynamite. This field should be populated if the request is FetchBotCategories/ListBotCatalogEntries",
-                    "type": "string"
-                },
-                "botName": {
-                    "description": "Non-unique, user-defined display name of the Bot. This field should be populated if the request is FetchBotCategories/ListBotCatalogEntries.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Short description for the bot.",
-                    "type": "string"
-                },
-                "developerName": {
-                    "description": "Name of bot developer.",
-                    "type": "string"
-                },
-                "marketPlaceBannerUrl": {
-                    "description": "URL for the banner image in GSuite Market Place. The banner will be 220x140.",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "Indicates whether bot is enabled/disabled.",
-                    "enum": [
-                        "UNKNOWN_STATUS",
-                        "ENABLED",
-                        "DISABLED_BY_DEVELOPER"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "Bot has been disabled by the bot developer. No one can @mention or interact with the bot."
-                    ],
-                    "type": "string"
-                },
-                "supportHomeScreen": {
-                    "description": "If the app supports a home screen.",
-                    "type": "boolean"
-                },
-                "supportUrls": {
-                    "$ref": "SupportUrls",
-                    "description": "Urls with additional information related to the bot. This field should always be set even if all the fields within it are empty, so that it is convenient for clients to work with this field in javascript."
-                },
-                "supportedUses": {
-                    "description": "The supported uses are limited according to the user that made the request. If the user does not have permission to use the bot, the list will be empty. This could occur for non whitelisted bots in the catalog.",
-                    "items": {
-                        "enum": [
-                            "UNKNOWN",
-                            "CAN_ADD_TO_DM",
-                            "CAN_ADD_TO_ROOM",
-                            "CAN_ADD_TO_HUMAN_DM"
-                        ],
-                        "enumDescriptions": [
-                            "",
-                            "",
-                            "",
-                            ""
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BotResponse": {
-            "description": "Information about a bot response, branched from shared/bot_response.proto without frontend User proto as we never store it.",
-            "id": "BotResponse",
-            "properties": {
-                "botId": {
-                    "$ref": "UserId"
-                },
-                "requiredAction": {
-                    "enum": [
-                        "UNKNOWN_SETUP_TYPE",
-                        "CONFIGURATION",
-                        "AUTHENTICATION"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Bot requires configuration.",
-                        "Bot requires authentication."
-                    ],
-                    "type": "string"
-                },
-                "responseType": {
-                    "enum": [
-                        "UNKNOWN_RESPONSE_TYPE",
-                        "ERROR",
-                        "SETUP_REQUIRED",
-                        "DISABLED_BY_ADMIN",
-                        "DISABLED_BY_DEVELOPER",
-                        "PRIVATE",
-                        "APP_SUGGESTION"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Bot fails to respond because of deadline_exceeded or failing to parse bot message.",
-                        "Bot requires auth or config",
-                        "Bot fails to respond because it is disabled by domain admin",
-                        "Bot fails to respond because it is disabled by the bot's developer",
-                        "Message to bot should be permanently private.",
-                        "A suggestion to promote an app."
-                    ],
-                    "type": "string"
-                },
-                "setupUrl": {
-                    "description": "URL for setting up bot.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BroadcastAccess": {
-            "description": "Broadcast access information of a meeting space.",
-            "id": "BroadcastAccess",
-            "properties": {
-                "accessPolicy": {
-                    "description": "The policy that controls the broadcast's viewer access.",
-                    "enum": [
-                        "BROADCASTING_ACCESS_POLICY_UNSPECIFIED",
-                        "ORGANIZATION",
-                        "PUBLIC"
-                    ],
-                    "enumDescriptions": [
-                        "Used only when broadcast is not enabled, or an unknown enum value is used.",
-                        "Only authenticated Google accounts belonging to the same organization as the meeting organizer can access the broadcast.",
-                        "Anyone with the broadcast view URL can access the broadcast."
-                    ],
-                    "type": "string"
-                },
-                "viewUrl": {
-                    "description": "A URL that can be used to access the broadcast of the meeting. This field will be empty if broadcast is not enabled. It will be populated by the backend. Clients cannot modify the value.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BroadcastSessionInfo": {
-            "description": "Information about a broadcast session.",
-            "id": "BroadcastSessionInfo",
-            "properties": {
-                "broadcastSessionId": {
-                    "description": "A unique server-generated ID for the broadcast session.",
-                    "type": "string"
-                },
-                "broadcastStats": {
-                    "$ref": "BroadcastStats",
-                    "description": "Output only. Current broadcast session's statistics.",
-                    "readOnly": true
-                },
-                "ingestionId": {
-                    "description": "Input only. Deprecated field, should not be used.",
-                    "type": "string"
-                },
-                "sessionStateInfo": {
-                    "$ref": "SessionStateInfo",
-                    "description": "Broadcast session's state information."
-                }
-            },
-            "type": "object"
-        },
-        "BroadcastStats": {
-            "description": "Statistics of the broadcast session.",
-            "id": "BroadcastStats",
-            "properties": {
-                "estimatedViewerCount": {
-                    "description": "Estimated concurrent viewer count.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Button": {
-            "id": "Button",
-            "properties": {
-                "imageButton": {
-                    "$ref": "ImageButton"
-                },
-                "textButton": {
-                    "$ref": "TextButton"
-                }
-            },
-            "type": "object"
-        },
-        "CalendarClientActionMarkup": {
-            "id": "CalendarClientActionMarkup",
-            "properties": {
-                "addAttachmentsActionMarkup": {
-                    "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupAddAttachmentsActionMarkup",
-                    "description": "An action that adds attachments to the Google Calendar event."
-                },
-                "editAttendeesActionMarkup": {
-                    "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupEditAttendeesActionMarkup",
-                    "description": "An action that adds attendees to the Google Calendar event."
-                },
-                "editConferenceDataActionMarkup": {
-                    "$ref": "AppsExtensionsMarkupCalendarClientActionMarkupEditConferenceDataActionMarkup",
-                    "description": "An action that adds conference data to the Google Calendar event."
-                }
-            },
-            "type": "object"
-        },
-        "CallInfo": {
-            "description": "Contains information regarding an ongoing conference (aka call) for a meeting space.",
-            "id": "CallInfo",
-            "properties": {
-                "abuseReportingConfig": {
-                    "$ref": "AbuseReportingConfig",
-                    "description": "Abuse reporting configuration for the ongoing conference."
-                },
-                "artifactOwner": {
-                    "$ref": "UserDisplayInfo",
-                    "description": "Output only. Display name of the owner of artifacts generated in this conference. The expected use of this in clients is to present info like \"This recording will be sent to John Doe's Drive\". This field can be empty if preferred display name determination fails for any reason.",
-                    "readOnly": true
-                },
-                "attachedDocuments": {
-                    "description": "Output only. Documents attached to an ongoing conference.",
-                    "items": {
-                        "$ref": "DocumentInfo"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                },
-                "availableAccessTypes": {
-                    "description": "List of available access types of the conference.",
-                    "items": {
-                        "enum": [
-                            "ACCESS_TYPE_UNSPECIFIED",
-                            "ACCESS_TYPE_OPEN",
-                            "ACCESS_TYPE_TRUSTED",
-                            "ACCESS_TYPE_RESTRICTED",
-                            "ACCESS_TYPE_CLOSED"
-                        ],
-                        "enumDescriptions": [
-                            "Default value. This value is unused.",
-                            "Anyone with meeting join information (url, phone access...) can join, no knocking required. (Subject to organization policies)",
-                            "Members of the Host's organization, invited external users, and dial-in users can join without knocking, everyone else must knock. (Subject to organization policies)",
-                            "Only participants invited by a host can automatically join, everyone else must knock and be admitted. (Subject to organization policies) Participants cannot dial out from the meeting. And only hosts can accept knocks.",
-                            "Only participants invited by a host can join. Knocking is not allowed, dial in and dial out are also disabled."
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "availableAnnotationToolTypes": {
-                    "description": "Available screen annotation tool types.",
-                    "items": {
-                        "enum": [
-                            "ANNOTATION_TOOL_TYPE_UNSPECIFIED",
-                            "ANNOTATION_TOOL_CLEAR_ALL",
-                            "ANNOTATION_TOOL_LINE",
-                            "ANNOTATION_TOOL_MAGIC_ERASER",
-                            "ANNOTATION_TOOL_PEN",
-                            "ANNOTATION_TOOL_SHAPE",
-                            "ANNOTATION_TOOL_TEXT_BOX"
-                        ],
-                        "enumDescriptions": [
-                            "Annotation tool type unspecified.",
-                            "Clears all annotations.",
-                            "Draws vector lines.",
-                            "Deletes elements that are touched.",
-                            "Draws freeform strokes.",
-                            "Draws simple vector shapes (such as rectangles or ellipses).",
-                            "Allows adding/editing text at this location."
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "availableReactions": {
-                    "description": "Output only. The set of reactions that clients are allowed to send and can expect to receive. Note that a device in the conference should have the MAY_SEND_REACTIONS privilege to be able to send reactions.",
-                    "items": {
-                        "$ref": "ReactionInfo"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                },
-                "broadcastSessionInfo": {
-                    "$ref": "BroadcastSessionInfo",
-                    "description": "Information about active broadcast session in the ongoing conference."
-                },
-                "calendarEventId": {
-                    "description": "Output only. The calendar event ID of a Google Calendar event that the meeting space is associated with. If the meeting space is not associated with an event in Google Calendar, this field is empty. For recurring events, it refers to the recurring instance associated with the current call, as determined by the server.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "coActivity": {
-                    "$ref": "CoActivity",
-                    "description": "The current co-activity session, or unset if there is none in progress. A co-activity session can be initiated by devices in JOINED state . Initiator of the co-activity is expected to populate this field to start the session. Once clients detect that the co-activity has finished, any JOINED device can clear this field to end the co-activity session. In the case of switching activities, the initiator of the new activity merely needs to override this with the new co-activity data, and all connected clients are expected to handle the transition gracefully."
-                },
-                "collaboration": {
-                    "$ref": "Collaboration",
-                    "description": "The current collaboration session, or unset if no collaboration is in progress."
-                },
-                "cseInfo": {
-                    "$ref": "CseInfo",
-                    "description": "CSE information for the ongoing conference."
-                },
-                "maxJoinedDevices": {
-                    "description": "Output only. The maximum number of devices that may be in the joined state simultaneously in this conference. This can be used by clients to guess whether it will be possible to join, but the only way to know is to try to join. It can also be used to inform users about the limit that is in effect. This limit is normally set when the conference is created and not changed during the lifetime of the conference. But there are some cases where it may change, so clients should be aware that the information may be stale.",
-                    "format": "int32",
-                    "readOnly": true,
-                    "type": "integer"
-                },
-                "organizationName": {
-                    "description": "Output only. The name or description of the organization or domain that the organizer belongs to. The expected use of this in clients is to present messages like \"John Doe (outside of Google.com) is trying to join this call\", where \"Google.com\" is the organization name. The field will be empty if the organization name could not be determined, possibly because of a backend error.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "paygateInfo": {
-                    "$ref": "PaygateInfo",
-                    "description": "Paygate information to clients."
-                },
-                "presenter": {
-                    "$ref": "Presenter",
-                    "description": "The current presenter in the call, or unset if there is no current presenter. Clients can set this to change the presenter."
-                },
-                "recordingInfo": {
-                    "$ref": "RecordingInfo",
-                    "description": "Deprecated, use RecordingSessionInfo instead. Info about recording for this conference. This will always be set in server responses, with a valid recording status. This is superseded by streaming_sessions field, which contains the same information about this recording as well as additional information about other application type at the same time. This will be deprecated and removed at some point."
-                },
-                "recordingSessionInfo": {
-                    "$ref": "RecordingSessionInfo",
-                    "description": "Information about active recording session in the ongoing conference."
-                },
-                "settings": {
-                    "$ref": "CallSettings",
-                    "description": "Settings of the ongoing conference."
-                },
-                "streamingSessions": {
-                    "description": "Output only. Info about streaming sessions (recording or broadcast) for this conference. This should contain all active sessions. Currently, it's guaranteed to have at most one recording and at most one broadcast (at most two sessions in total). For each application type (recording or broadcast), latest inactive session is included if there's no active one.",
-                    "items": {
-                        "$ref": "StreamingSessionInfo"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                },
-                "transcriptionSessionInfo": {
-                    "$ref": "TranscriptionSessionInfo",
-                    "description": "Information about active transcription session in the ongoing conference."
-                },
-                "viewerCount": {
-                    "description": "The number of devices viewing the conference - MeetingDevices that are in VIEWER role and JOINED state in the conference.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "youTubeBroadcastSessionInfos": {
-                    "description": "Information about active YouTube broadcast sessions in the ongoing conference.",
-                    "items": {
-                        "$ref": "YouTubeBroadcastSessionInfo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CallSettings": {
-            "description": "Effective settings of the ongoing conference.",
-            "id": "CallSettings",
-            "properties": {
-                "accessLock": {
-                    "description": "Indicates whether the access lock is currently on or off.",
-                    "type": "boolean"
-                },
-                "accessType": {
-                    "description": "The current access type of the conference.",
-                    "enum": [
-                        "ACCESS_TYPE_UNSPECIFIED",
-                        "ACCESS_TYPE_OPEN",
-                        "ACCESS_TYPE_TRUSTED",
-                        "ACCESS_TYPE_RESTRICTED",
-                        "ACCESS_TYPE_CLOSED"
-                    ],
-                    "enumDescriptions": [
-                        "Default value. This value is unused.",
-                        "Anyone with meeting join information (url, phone access...) can join, no knocking required. (Subject to organization policies)",
-                        "Members of the Host's organization, invited external users, and dial-in users can join without knocking, everyone else must knock. (Subject to organization policies)",
-                        "Only participants invited by a host can automatically join, everyone else must knock and be admitted. (Subject to organization policies) Participants cannot dial out from the meeting. And only hosts can accept knocks.",
-                        "Only participants invited by a host can join. Knocking is not allowed, dial in and dial out are also disabled."
-                    ],
-                    "type": "string"
-                },
-                "allowJoiningBeforeHost": {
-                    "description": "Whether users can join this conference before a host (Host or Cohost).",
-                    "type": "boolean"
-                },
-                "attendanceReportEnabled": {
-                    "description": "Indicates whether the attendance report is currently enabled or disabled.",
-                    "type": "boolean"
-                },
-                "audioLock": {
-                    "description": "Indicates whether the audio lock is currently on or off.",
-                    "type": "boolean"
-                },
-                "chatLock": {
-                    "description": "Indicates whether the chat lock is currently on or off.",
-                    "type": "boolean"
-                },
-                "coActivityLock": {
-                    "description": "Indicates whether the co-activity lock is currently on or off.",
-                    "type": "boolean"
-                },
-                "cseEnabled": {
-                    "description": "Whether Client-side Encryption is enabled for this conference.",
-                    "type": "boolean"
-                },
-                "moderationEnabled": {
-                    "description": "Indicates whether moderation is currently on or off.",
-                    "type": "boolean"
-                },
-                "presentLock": {
-                    "description": "Indicates whether the present lock is currently on or off.",
-                    "type": "boolean"
-                },
-                "reactionsLock": {
-                    "description": "Indicates whether the reactions lock is currently on or off.",
-                    "type": "boolean"
-                },
-                "videoLock": {
-                    "description": "Indicates whether the video lock is currently on or off.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "CapTokenHolderProto": {
-            "description": "Represents a principal which possesses a particular secret string whose cryptographic hash is specified here. CapTokens (\"Capability Tokens\") are used in ACLProto. It's expected that ACLs with CapTokenHolders will strongly enforce them by Keystore-wrapping crypto keys for the corresponding CapTokens.",
-            "id": "CapTokenHolderProto",
-            "properties": {
-                "tokenHmacSha1Prefix": {
-                    "description": "The hash of the corresponding capability token. The value is defined to be identical to the one in acl.proto's CapTokenMetadata: 10-byte prefix of HMAC-SHA1 of the token. The HMAC key is the following fixed (non-secret) 512-bit value: 79b1c8f4 82baf523 b8a9ab4a e960f438 c45be041 11f1f222 e8a3f64d aeb05e3d c3576acc ec649194 aede422c 4e48e0d1 ff21234a a6ed6b49 a7fa592e efd7bba3",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Card": {
-            "id": "Card",
-            "properties": {
-                "cardActions": {
-                    "items": {
-                        "$ref": "CardAction"
-                    },
-                    "type": "array"
-                },
-                "displayStyle": {
-                    "enum": [
-                        "DISPLAY_STYLE_UNSPECIFIED",
-                        "PEEK",
-                        "REPLACE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "fixedFooter": {
-                    "$ref": "FixedFooter"
-                },
-                "header": {
-                    "$ref": "CardHeader"
-                },
-                "name": {
-                    "description": "Name of the card used in CardNavigation.pop_to_card_name.",
-                    "type": "string"
-                },
-                "peekCardHeader": {
-                    "$ref": "CardHeader",
-                    "description": "When displaying contextual content, the peek card header acts as a placeholder so that the user can navigate forward between the homepage cards and the contextual cards."
-                },
-                "sections": {
-                    "items": {
-                        "$ref": "Section"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CardAction": {
-            "description": "When an AddOn Card is shown in detailed view, a card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser.",
-            "id": "CardAction",
-            "properties": {
-                "actionLabel": {
-                    "description": "The label used to be displayed in the action menu item.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "OnClick"
-                }
-            },
-            "type": "object"
-        },
-        "CardCapabilityMetadata": {
-            "id": "CardCapabilityMetadata",
-            "properties": {
-                "requiredCapabilities": {
-                    "description": "NEXT TAG : 2",
-                    "items": {
-                        "enum": [
-                            "UNKNOWN",
-                            "SUPPORTS_BASE_CARDS"
-                        ],
-                        "enumDescriptions": [
-                            "",
-                            "NEXT TAG : 2"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CardHeader": {
-            "id": "CardHeader",
-            "properties": {
-                "imageAltText": {
-                    "description": "The alternative text of this image which will be used for accessibility.",
-                    "type": "string"
-                },
-                "imageStyle": {
-                    "enum": [
-                        "CROP_TYPE_NOT_SET",
-                        "SQUARE",
-                        "CIRCLE",
-                        "RECTANGLE_CUSTOM",
-                        "RECTANGLE_4_3"
-                    ],
-                    "enumDescriptions": [
-                        "No value specified.",
-                        "Applies a square crop.",
-                        "Applies a circular crop.",
-                        "Applies a rectangular crop with a custom aspect ratio.",
-                        "Applies a rectangular crop with a 4:3 aspect ratio."
-                    ],
-                    "type": "string"
-                },
-                "imageUrl": {
-                    "type": "string"
-                },
-                "subtitle": {
-                    "type": "string"
-                },
-                "title": {
-                    "description": "The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each will take up 1 line. If only the title is specified, it will take up both lines. The header is rendered in collapsed and detailed view.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CaribouAttributeValue": {
-            "id": "CaribouAttributeValue",
-            "properties": {
-                "booleanValue": {
-                    "description": "Tags 1 through 15 are reserved for the most commonly used fields.",
-                    "type": "boolean"
-                },
-                "intValue": {
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "longValue": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "rawByteValue": {
-                    "description": "Generally, applications should avoid storing raw bytes and instead store structured data as protocol buffer extensions. This both reduces the amount of ad-hoc attribute parsing code as well as eliminates an intermediate copy of the data when deserializing the value. The rawByteValue field is mainly provided for compatibility with attributes stored before the introduction of the Attribute.Value.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "stringValue": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ChatClientActionMarkup": {
-            "description": "Actions handled by Chat Clients.",
-            "id": "ChatClientActionMarkup",
-            "properties": {},
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadata": {
-            "description": "Metadata used as inputs to the localization that is performed on Dynamite-originated messages that are incompatible with Hangouts clients. See go/localization-of-system-messages for more details.",
-            "id": "ChatConserverDynamitePlaceholderMetadata",
-            "properties": {
-                "attachmentMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadataAttachmentMetadata"
-                },
-                "botMessageMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadataBotMessageMetadata"
-                },
-                "calendarEventMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadataCalendarEventMetadata"
-                },
-                "deleteMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadataDeleteMetadata"
-                },
-                "editMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadataEditMetadata"
-                },
-                "spaceUrl": {
-                    "description": "The space URL embedded in the localized string.",
-                    "type": "string"
-                },
-                "tasksMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadataTasksMetadata"
-                },
-                "videoCallMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadataVideoCallMetadata"
-                }
-            },
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadataAttachmentMetadata": {
-            "description": "An attachment uploaded in Dynamite and its filename.",
-            "id": "ChatConserverDynamitePlaceholderMetadataAttachmentMetadata",
-            "properties": {
-                "filename": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadataBotMessageMetadata": {
-            "description": "A bot sent a message in Dynamite.",
-            "id": "ChatConserverDynamitePlaceholderMetadataBotMessageMetadata",
-            "properties": {},
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadataCalendarEventMetadata": {
-            "description": "A Calendar event message in Dynamite.",
-            "id": "ChatConserverDynamitePlaceholderMetadataCalendarEventMetadata",
-            "properties": {},
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadataDeleteMetadata": {
-            "description": "A message was deleted in Dynamite.",
-            "id": "ChatConserverDynamitePlaceholderMetadataDeleteMetadata",
-            "properties": {},
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadataEditMetadata": {
-            "description": "An edit was made in Dynamite.",
-            "id": "ChatConserverDynamitePlaceholderMetadataEditMetadata",
-            "properties": {},
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadataTasksMetadata": {
-            "description": "A Tasks message in Dynamite.",
-            "id": "ChatConserverDynamitePlaceholderMetadataTasksMetadata",
-            "properties": {},
-            "type": "object"
-        },
-        "ChatConserverDynamitePlaceholderMetadataVideoCallMetadata": {
-            "description": "A Meet initiated in Dynamite and its URL.",
-            "id": "ChatConserverDynamitePlaceholderMetadataVideoCallMetadata",
-            "properties": {
-                "meetingUrl": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ChatConserverMessageContent": {
-            "description": "The content of a chat message, which includes 0 or more segments along with 0 or more embeds, which represent various attachment types (like photos).",
-            "id": "ChatConserverMessageContent",
-            "properties": {
-                "attachment": {
-                    "description": "Items attached to this message, such as photos. This should *NOT* be set by clients. It will be automatically set from media uploaded along with this request and using the information provided in existing_media.",
-                    "items": {
-                        "$ref": "SocialCommonAttachmentAttachment"
-                    },
-                    "type": "array"
-                },
-                "segment": {
-                    "description": "The text part of the message content. Segments are concatenated together to yield the full message. A message can have zero or more segments.",
-                    "items": {
-                        "$ref": "Segment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ChatContentExtension": {
-            "description": "NEXT ID: 12",
-            "id": "ChatContentExtension",
-            "properties": {
-                "annotation": {
-                    "description": "Annotations to decorate this event.",
-                    "items": {
-                        "$ref": "EventAnnotation"
-                    },
-                    "type": "array"
-                },
-                "dynamitePlaceholderMetadata": {
-                    "$ref": "ChatConserverDynamitePlaceholderMetadata",
-                    "description": "This metadata informs how the placeholder string will be localized dynamically in Hangouts. See go/localization-of-system-messages. This is only used as part of REGULAR_CHAT_MESSAGE events."
-                },
-                "eventOtrStatus": {
-                    "description": "Is this event OnTR or OffTR? Since some events can be ON_THE_RECORD and have an expiration_timestamp (for example enterprise retention users) we need to store the otr status.",
-                    "enum": [
-                        "OFF_THE_RECORD",
-                        "ON_THE_RECORD"
-                    ],
-                    "enumDescriptions": [
-                        "The conversation is completely off the record.",
-                        "The conversation is completely on the record."
-                    ],
-                    "type": "string"
-                },
-                "groupLinkSharingModificationEvent": {
-                    "$ref": "GroupLinkSharingModificationEvent",
-                    "description": "Group-link sharing toggle event."
-                },
-                "hangoutEvent": {
-                    "$ref": "HangoutEvent",
-                    "description": "Audio/video Hangout event."
-                },
-                "inviteAcceptedEvent": {
-                    "$ref": "InviteAcceptedEvent",
-                    "description": "Invite accepted events. Note: this is only used ephemerally to sync to Gmail. No actual cent is stored in Papyrus."
-                },
-                "membershipChangeEvent": {
-                    "$ref": "MembershipChangeEvent",
-                    "description": "Join/leave events."
-                },
-                "otrChatMessageEvent": {
-                    "$ref": "OtrChatMessageEvent",
-                    "description": "Metadata for off-the-record message."
-                },
-                "otrModificationEvent": {
-                    "$ref": "OtrModificationEvent"
-                },
-                "renameEvent": {
-                    "$ref": "RenameEvent"
-                }
-            },
-            "type": "object"
-        },
-        "ChatProto": {
-            "description": "Represents the invitees or other users associated with a Babel Chat (see http://goto/babel). Corresponds to GroupType CHAT in //social/graph/storage/proto/data.proto.",
-            "id": "ChatProto",
-            "properties": {
-                "chatId": {
-                    "description": "Chat IDs consist of alphanumeric characters and colons. Currently required.",
-                    "type": "string"
-                },
-                "memberType": {
-                    "description": "The type of Chat members to consider, e.g. \"all members\" vs. \"invitee\" These are defined by legacy_relation_id values in social.graph.storage.EdgeTypeEnum.EdgeType enum options in social/graph/storage/proto/id.proto. See chat.pb (defined in production/config/cdd/socialgraph/mixer_config/prod/node_type_config) for all valid edge types associated with chat. Currently required.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "CheckAccessResponse": {
             "id": "CheckAccessResponse",
             "properties": {
@@ -6585,202 +2202,6 @@
             },
             "type": "object"
         },
-        "CircleProto": {
-            "description": "Represents a Google+ Circle. Currently (12/2011), a Circle is identical to the ContactGroup with matching parameters, but Circle must only be used for true Circles and not other Focus groups, and should be preferred over ContactGroup where applicable. Soon it may become more efficient to check membership in a Circle than in a ContactGroup (see http://go/superglue). Support for this principal type is currently (12/2011) incomplete -- e.g., Keystore does not support it yet (see b/5703421).",
-            "id": "CircleProto",
-            "properties": {
-                "circleId": {
-                    "description": "Circle ID is unique only relative to the owner's Gaia ID. Currently required.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "ownerGaiaId": {
-                    "description": "The owner of the circle. Currently required.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "requiredConsistencyTimestampUsec": {
-                    "description": "If present, then tests for membership in this circle must use data known to be at least as fresh as the given (FBS-assigned) timestamp. See http://go/fbs-consistent-read-after-important-write Before using this, be sure that any service checking authorization against this circle supports checking consistency timestamps. For example, as of 12/2011, Keystore only supports this for the Moonshine configuration, and in others authorization checks will fail if the timestamp is present.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ClientContext": {
-            "description": "Represents the context of the client on behalf of which a HistoryRecord is produced. The ClientContext message can be used to hold context about the service client (e.g. the internal server making fusebox requests) or the user client (e.g. the IP address of the end user).",
-            "id": "ClientContext",
-            "properties": {
-                "clientOperationId": {
-                    "description": "The client operation to which this history record belongs. The notion of a client operation is provided to keep track of client operations which might span multiple transactions in the lower level.",
-                    "type": "string"
-                },
-                "clientType": {
-                    "description": "E.g. \"pinto\", \"imap\", \"bigtop\", \"upload\"",
-                    "type": "string"
-                },
-                "sessionContext": {
-                    "$ref": "SessionContext",
-                    "description": "Contains information about the session which created this history record. This will be empty if the history record was generated by an internal request."
-                },
-                "userIp": {
-                    "description": "Textual representation of the user's IP address, if available.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CloudPrincipalProto": {
-            "description": "Principal associated with a Cloud Principal representing third party user.",
-            "id": "CloudPrincipalProto",
-            "properties": {
-                "id": {
-                    "description": "Format: \"{identity-pool}:{subject}#\" Details: go/cloud-principal-identifiers",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ClusterInfo": {
-            "description": "ClusterInfo contains clustering related information for a particular thread that would be sent as part of the conversation view. Today, this information would be used by iOS notification server to identify whether the thread belongs to a cluster. If the thread belongs to a grouped cluster, it would identify whether the cluster is throttled.",
-            "id": "ClusterInfo",
-            "properties": {
-                "clusterId": {
-                    "description": "IDs of the highest priority clusters to which the thread belongs to. If this field is not present, the thread does not belong to any cluster and would be shown in the inbox, unclustered.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "throttled": {
-                    "description": "If the thread belongs to a grouped cluster and all of those clusters are throttled, then this field is set to true.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "CoActivity": {
-            "description": "Metadata about a co-activity session.",
-            "id": "CoActivity",
-            "properties": {
-                "activityTitle": {
-                    "description": "The title of the activity in this co-activity session. For example, this might be the title of the video being co-watched, or the name of the round of a game being co-played.",
-                    "type": "string"
-                },
-                "addOnId": {
-                    "description": "The add-on id of the current add-on being used for co-activity.",
-                    "type": "string"
-                },
-                "addOnStartingState": {
-                    "$ref": "AddOnStartingState",
-                    "description": "The starting state of the add-on frames for co-activity."
-                },
-                "coActivityApp": {
-                    "description": "Identifies the app handling this co-activity.",
-                    "enum": [
-                        "CO_ACTIVITY_APP_UNSPECIFIED",
-                        "CO_ACTIVITY_APP_YOU_TUBE_MAIN",
-                        "CO_ACTIVITY_APP_SPOTIFY",
-                        "CO_ACTIVITY_APP_UNO",
-                        "CO_ACTIVITY_APP_HEADSUP",
-                        "CO_ACTIVITY_APP_KAHOOT",
-                        "CO_ACTIVITY_APP_GQUEUES",
-                        "CO_ACTIVITY_APP_YOU_TUBE_MUSIC",
-                        "CO_ACTIVITY_APP_SAMSUNG_NOTES",
-                        "CO_ACTIVITY_APP_HAPPY_AARDVARK"
-                    ],
-                    "enumDescriptions": [
-                        "Should never be used.",
-                        "Main YouTube app, for watching videos.",
-                        "Spotify music.",
-                        "Uno game.",
-                        "HeadsUp game.",
-                        "Kahoot! educational software.",
-                        "GQueues task manager.",
-                        "YouTube Music",
-                        "Samsung Notes",
-                        "."
-                    ],
-                    "type": "string"
-                },
-                "initiatorDeviceId": {
-                    "description": "The resource name of the device that initiated the co-activity.",
-                    "type": "string"
-                },
-                "presentationDeviceId": {
-                    "description": "The resource name of the device that is presenting the add-on.",
-                    "type": "string"
-                },
-                "projectNumber": {
-                    "description": "The project number of the add-on to determine version.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Collaboration": {
-            "description": "Information about a collaboration session.",
-            "id": "Collaboration",
-            "properties": {
-                "attachmentId": {
-                    "description": "The attachment being collaborated on.",
-                    "type": "string"
-                },
-                "initiator": {
-                    "$ref": "UserDisplayInfo",
-                    "description": "Display info of the user who initiated the collaboration session."
-                },
-                "uri": {
-                    "description": "The uri of the artifact being collaborated on.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Color": {
-            "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
-            "id": "Color",
-            "properties": {
-                "alpha": {
-                    "description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0).",
-                    "format": "float",
-                    "type": "number"
-                },
-                "blue": {
-                    "description": "The amount of blue in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "green": {
-                    "description": "The amount of green in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "red": {
-                    "description": "The amount of red in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "CommunalLabelTag": {
-            "description": "An individual instance (or \"tag\") of a label configured as a communal type that's associated with a message.",
-            "id": "CommunalLabelTag",
-            "properties": {
-                "creatorUserId": {
-                    "description": "Gaia ID of the user who added the tag, if any. Not present for any tags automatically created by server-side processing.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "labelId": {
-                    "description": "A string ID representing the label. Possible ID values are documented at go/chat-labels-howto:ids. Example: \"^*t_p\" for \"Pinned\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "CompositeFilter": {
             "id": "CompositeFilter",
             "properties": {
@@ -6808,89 +2229,141 @@
             },
             "type": "object"
         },
-        "ConsentedAppUnfurlMetadata": {
-            "description": "Annotation metadata app unfurl consent.",
-            "id": "ConsentedAppUnfurlMetadata",
+        "Content": {
+            "id": "Content",
             "properties": {
-                "clientSpecifiedAppId": {
-                    "$ref": "UserId",
-                    "description": "Client specified AppId, which will not be sanitized and is untrusted."
+                "actions": {
+                    "description": "[Optional] Actions for this card.",
+                    "items": {
+                        "$ref": "Action"
+                    },
+                    "type": "array"
+                },
+                "description": {
+                    "$ref": "SafeHtmlProto",
+                    "description": "[Optional] Description of the card."
+                },
+                "subtitle": {
+                    "$ref": "BackgroundColoredText",
+                    "description": "[Optional] Subtitle of the card."
+                },
+                "title": {
+                    "$ref": "BackgroundColoredText",
+                    "description": "[Optional] Title of the card."
                 }
             },
             "type": "object"
         },
-        "ContactGroupProto": {
-            "description": "A group of contacts for a given user, as described in http://cs/p#google3/focus/backend/proto/backend.proto Historically (and in still-existing ACLs), this was used to represent Google+ circles as well as contact groups, but this use is now deprecated. New code should use the CIRCLE principal type to represent Google+ circles.",
-            "id": "ContactGroupProto",
+        "Context": {
+            "id": "Context",
             "properties": {
-                "groupId": {
-                    "description": "Group ID is unique only relative to the owner's Gaia ID.",
+                "app": {
+                    "description": "[Optional] App where the card should be shown. If missing, the card will be shown in TOPAZ.",
+                    "items": {
+                        "enum": [
+                            "UNKNOWN_APP",
+                            "TOPAZ",
+                            "MOMA"
+                        ],
+                        "enumDescriptions": [
+                            "",
+                            "",
+                            ""
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "dayOfWeek": {
+                    "description": "[Optional] Day of week when the card should be shown, where 0 is Monday.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "endDateSec": {
+                    "description": "[Optional] Date (in seconds since epoch) when the card should stop being shown. If missing, end_date_sec will be set to Jan 1st, 2100.",
                     "format": "int64",
                     "type": "string"
                 },
-                "ownerGaiaId": {
+                "endDayOffsetSec": {
+                    "description": "[Optional] End time in seconds, within a day, when the card should stop being shown if it's within [start_date_sec, end_date_sec]. If missing, this is set to 86400 (24 hours x 3600 sec/hour), i.e., midnight next day.",
                     "format": "int64",
                     "type": "string"
                 },
-                "requiredConsistencyTimestampUsec": {
-                    "description": "If present, then tests for membership in this ContactGroup must use data known to be at least as fresh as the given (FBS-assigned) timestamp. See http://go/fbs-consistent-read-after-important-write Before using this, be sure that any service checking authorization against this group supports checking consistency timestamps. For example, as of 12/2011, Keystore only supports this for the Moonshine configuration, and in others authorization checks will fail if the timestamp is present.",
+                "locale": {
+                    "description": "[Optional] The locales for which the card should be triggered (e.g., en_US and en_CA). If missing, the card is going to show to clients regardless of their locale.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "location": {
+                    "description": "[Optional] Text-free locations where the card should be shown. This is expected to match the user's location in focus. If no location is specified, the card will be shown for any location.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "query": {
+                    "description": "[Required only for Answer and RHS cards - will be ignored for Homepage] cards. It's the exact case-insensitive queries that will trigger the Answer or RHS card.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "startDateSec": {
+                    "description": "[Optional] Date (in seconds since epoch) when the card should start being shown. If missing, start_date_sec will be Jan 1st, 1970 UTC.",
                     "format": "int64",
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ContentReport": {
-            "id": "ContentReport",
-            "properties": {
-                "reportCreateTimestamp": {
-                    "description": "The time at which the report is generated. Always populated when it is in a response.",
-                    "format": "google-datetime",
+                },
+                "startDayOffsetSec": {
+                    "description": "[Optional] Start time in seconds, within a day, when the card should be shown if it's within [start_date_sec, end_date_sec]. If 0, the card will be shown from 12:00am on.",
+                    "format": "int64",
                     "type": "string"
                 },
-                "reportJustification": {
-                    "$ref": "ContentReportJustification",
-                    "description": "Additional user-provided justification on the report. Optional."
+                "surface": {
+                    "description": "[Optional] Surface where the card should be shown in. If missing, the card will be shown in any surface.",
+                    "items": {
+                        "enum": [
+                            "UNKNOWN_SURFACE",
+                            "DESKTOP",
+                            "ANDROID",
+                            "IOS",
+                            "MOBILE",
+                            "ANY"
+                        ],
+                        "enumDescriptions": [
+                            "",
+                            "",
+                            "",
+                            "",
+                            "Any mobile device.",
+                            ""
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
                 },
-                "reportType": {
-                    "$ref": "AppsDynamiteSharedContentReportType",
-                    "description": "Type of the report. Always populated when it is in a response."
-                },
-                "reporterUserId": {
-                    "$ref": "UserId",
-                    "description": "User ID of the reporter. Always populated when it is in a response."
-                },
-                "revisionCreateTimestamp": {
-                    "description": "Create timestamp of the revisions of the message when it's reported. Always populated when it is in a response.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ContentReportJustification": {
-            "id": "ContentReportJustification",
-            "properties": {
-                "userJustification": {
-                    "description": "Optional. User-generated free-text justification for the content report.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ContentReportSummary": {
-            "description": "Summarized info of content reports. Usually less expensive to fetch than to fetch all detailed reports. Set only when the request asks for it.",
-            "id": "ContentReportSummary",
-            "properties": {
-                "numberReports": {
-                    "description": "Total number of reports attached to this (revision of) message.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "numberReportsAllRevisions": {
-                    "description": "Totoal number of reports attached to all revisions of this message (i.e. since creation). Set only when the request asks for it.",
-                    "format": "int32",
-                    "type": "integer"
+                "type": {
+                    "description": "[Required] Type of the card (homepage, Answer or RHS).",
+                    "items": {
+                        "enum": [
+                            "UNKNOWN_CARD_TYPE",
+                            "HOMEPAGE_CARD",
+                            "ANSWER_CARD",
+                            "RHS_CARD"
+                        ],
+                        "enumDescriptions": [
+                            "",
+                            "",
+                            "",
+                            ""
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -6913,74 +2386,6 @@
             },
             "type": "object"
         },
-        "ContextualAddOnMarkup": {
-            "description": "The markup for developers to specify the contents of a contextual AddOn. A contextual AddOn is triggered in context of an email. For that email, there can be N items that are associated with the email (e.g. contacts, sales lead, meeting information). Each item is represented as a \"card\". A card has two views, collapsed and detailed. If there are more than 1 card, the cards are show as a list of collapsed views. The end user can expand into the detailed view for each of those cards. In the detailed view, developers have the freedom to use a variety of \"widgets\" to construct it. The model here is to restrict (make consistent for end users) the navigation of the N cards but providing developers the freedom to build the detailed view that can best represent their use case/content. Go http://go/aoig-widgets1 to see the mocks. Post v1, we plan to support new AddOn use cases that will require different and separate 'templates'. For example, a compose triggered AddOn which will support a new set of use cases with different user interaction patterns. As a result, we will likely need a very different template than this one.",
-            "id": "ContextualAddOnMarkup",
-            "properties": {
-                "cards": {
-                    "description": "A card must contain a header and at least 1 section.",
-                    "items": {
-                        "$ref": "Card"
-                    },
-                    "type": "array"
-                },
-                "toolbar": {
-                    "$ref": "Toolbar",
-                    "description": "Deprecated."
-                }
-            },
-            "type": "object"
-        },
-        "CseInfo": {
-            "description": "Information needed for Client-side Encryption.",
-            "id": "CseInfo",
-            "properties": {
-                "cseDomain": {
-                    "description": "CSE domain name claimed by the meeting owner's company. This field is expected to be used for display purposes only, i.e., \"Extra encryption added by $cse_domain\". It can differ from the `cse_domain` as defined elsewhere on the User, in the case of cross-domain meetings.",
-                    "type": "string"
-                },
-                "wrappedKey": {
-                    "description": "The wrapped CSE key used by this conference.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CustomEmojiMetadata": {
-            "id": "CustomEmojiMetadata",
-            "properties": {
-                "customEmoji": {
-                    "$ref": "AppsDynamiteSharedCustomEmoji"
-                }
-            },
-            "type": "object"
-        },
-        "CustomFunctionReturnValueMarkup": {
-            "description": "The result of a user running a custom function.",
-            "id": "CustomFunctionReturnValueMarkup",
-            "properties": {
-                "errorMessage": {
-                    "description": "The error message to show to the user if something went wrong.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value that resulted from running the custom function.",
-                    "type": "any"
-                }
-            },
-            "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",
@@ -7086,27 +2491,8 @@
             },
             "type": "object"
         },
-        "DataLossPreventionMetadata": {
-            "description": "Annotation metadata for Data Loss Prevention that pertains to DLP violation on message send or edit events. It is used for client -> BE communication and other downstream process in BE (e.g. storage and audit logging), and it should never be returned to the client.",
-            "id": "DataLossPreventionMetadata",
-            "properties": {
-                "dlpMessageScanRecord": {
-                    "$ref": "DlpMessageScanRecord",
-                    "description": "The scan record contains the action taken on the message send as well as scan the summary for the message contents and the attachment, if applicable."
-                },
-                "dlpScanSummary": {
-                    "$ref": "DlpScanSummary",
-                    "description": "Deprecated. To be replaced by DLP scan record. The DLP scan summary that should only be set after the message is scanned in the Chat backend."
-                },
-                "warnAcknowledged": {
-                    "description": "Flag set by client on message resend to bypass WARN violation.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
         "DataSource": {
-            "description": "Datasource is a logical namespace for items to be indexed. All items must belong to a datasource. This is the prerequisite before items can be indexed into Cloud Search.",
+            "description": "Datasource is a logical namespace for items to be indexed. All items must belong to a datasource. This is the prerequisite before items can be indexed into Cloud Search. ",
             "id": "DataSource",
             "properties": {
                 "disableModifications": {
@@ -7245,50 +2631,6 @@
             },
             "type": "object"
         },
-        "DateTimePicker": {
-            "id": "DateTimePicker",
-            "properties": {
-                "label": {
-                    "description": "The label for the field, which is displayed to the user.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the text field which is used in FormInput, and uniquely identifies this input.",
-                    "type": "string"
-                },
-                "onChange": {
-                    "$ref": "FormAction",
-                    "description": "Triggered when the user clicks on the Save, or Clear button from the date / time picker dialog. Will only be triggered if the value changed as a result of the Save / Clear operation."
-                },
-                "timezoneOffsetDate": {
-                    "description": "The number representing the time-zone offset from UTC, in minutes. If set, the value_ms_epoch will be displayed in the specified time zone. If not set, it will use the user's timezone setting in client side.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "type": {
-                    "description": "The type of the DateTimePicker.",
-                    "enum": [
-                        "UNSPECIFIED_TYPE",
-                        "DATE_AND_TIME",
-                        "DATE_ONLY",
-                        "TIME_ONLY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "valueMsEpoch": {
-                    "description": "The value to display which can be the default value before user input or previous user input. It is represented in milliseconds (Epoch time). - For DATE_AND_TIME type, the full epoch value is used. - For DATE_ONLY type, only date of the epoch time is used. - For TIME_ONLY type, only time of the epoch time is used. For example, you can set epoch time to 3 * 60 * 60 * 1000 to represent 3am.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "DateValues": {
             "description": "List of date values.",
             "id": "DateValues",
@@ -7313,39 +2655,6 @@
             },
             "type": "object"
         },
-        "DeepLinkData": {
-            "description": "Deep-linking data is used to construct a deep-link URI for an activity or frame's embed, such that on click, the user is taken to the right place in a mobile app. If the app is not installed, the user is taken to the app store. If not on mobile, an analogous web uri is used.",
-            "id": "DeepLinkData",
-            "properties": {
-                "appId": {
-                    "description": "Application ID (or project ID) from Google API Console.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "client": {
-                    "description": "The data for a Google API Console client is entered by a developer during client registration and is stored in PackagingService.",
-                    "items": {
-                        "$ref": "PackagingServiceClient"
-                    },
-                    "type": "array"
-                },
-                "deepLinkId": {
-                    "description": "The ID for non-URL content. Embeds may either have no analogous web presence or prefer a native mobile experience if supported. In the case of no web presence, instead of setting the \"url\" field of an embed, such developers will set this field and other content fields, e.g. thumbnail, title, description. If set, this field is used to construct the deep-link URI. Note that the native experience is preferred over the web link and the web link is used as a fallback.",
-                    "type": "string"
-                },
-                "url": {
-                    "description": "Analogous web presence. Used as desktop fallback or when no native link data is present.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DeleteMetadata": {
-            "description": "A message delete in Dynamite inserts a Babel-only item containing this field. This is only inserted for messages before the source-of-truth flip. See go/hsc-message-deletions for more details.",
-            "id": "DeleteMetadata",
-            "properties": {},
-            "type": "object"
-        },
         "DeleteQueueItemsRequest": {
             "id": "DeleteQueueItemsRequest",
             "properties": {
@@ -7364,32 +2673,6 @@
             },
             "type": "object"
         },
-        "DeliveryMedium": {
-            "id": "DeliveryMedium",
-            "properties": {
-                "mediumType": {
-                    "description": "Describes the medium the cent was sent/received. For example, if I receive an SMS via GV, the medium_type will be GV.",
-                    "enum": [
-                        "UNKNOWN_MEDIUM",
-                        "BABEL_MEDIUM",
-                        "GOOGLE_VOICE_MEDIUM",
-                        "LOCAL_SMS_MEDIUM"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "selfPhone": {
-                    "$ref": "VoicePhoneNumber",
-                    "description": "In the case of multiple GV/native numbers, this defines the exact number to send from. It is used to differentiate mediums that have the same type, but different addresses (e.g. two android phones)."
-                }
-            },
-            "type": "object"
-        },
         "DisplayedProperty": {
             "description": "A reference to a top-level property within the object that should be displayed in search results. The values of the chosen properties is displayed in the search results along with the display label for that property if one is specified. If a display label is not specified, only the values is shown.",
             "id": "DisplayedProperty",
@@ -7401,236 +2684,6 @@
             },
             "type": "object"
         },
-        "Divider": {
-            "id": "Divider",
-            "properties": {},
-            "type": "object"
-        },
-        "DlpAction": {
-            "id": "DlpAction",
-            "properties": {
-                "actionType": {
-                    "enum": [
-                        "NO_ACTION",
-                        "BLOCK",
-                        "AUDIT_ONLY",
-                        "WARN"
-                    ],
-                    "enumDescriptions": [
-                        "LINT.IfChange",
-                        "",
-                        "",
-                        "LINT.ThenChange(//depot/google3/java/com/google/apps/dynamite/v1/external/dlp/ApplicableDlpActionEvaluator.java)"
-                    ],
-                    "type": "string"
-                },
-                "unsafeHtmlMessageBody": {
-                    "description": "The custom error message defined by the customer administrator.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DlpMessageScanRecord": {
-            "description": "A summary of a DLP scan. This is a combination summary that contains both scan on message and scan on attachments if any.",
-            "id": "DlpMessageScanRecord",
-            "properties": {
-                "attachmentScanSummary": {
-                    "$ref": "DlpScanSummary",
-                    "description": "Summaries of the attachment scan if any."
-                },
-                "dlpAction": {
-                    "$ref": "DlpAction",
-                    "description": "The applied action."
-                },
-                "messageScanSummary": {
-                    "$ref": "DlpScanSummary",
-                    "description": "Summaries of the message scan."
-                },
-                "scanOutcome": {
-                    "description": "The DLP scan outcome for the message.",
-                    "enum": [
-                        "SCAN_UNKNOWN_OUTCOME",
-                        "SCAN_SUCCEEDED_NO_VIOLATION",
-                        "SCAN_SUCCEEDED_BLOCK",
-                        "SCAN_SUCCEEDED_WARN",
-                        "SCAN_SUCCEEDED_AUDIT_ONLY",
-                        "SCAN_FAILURE_EXCEPTION",
-                        "SCAN_FAILURE_RULE_FETCH_FAILED",
-                        "SCAN_FAILURE_TIMEOUT",
-                        "SCAN_FAILURE_ALL_RULES_FAILED",
-                        "SCAN_FAILURE_ILLEGAL_STATE_FOR_ATTACHMENTS",
-                        "SCAN_SKIPPED_EXPERIMENT_DISABLED",
-                        "SCAN_SKIPPED_CONSUMER",
-                        "SCAN_SKIPPED_NON_HUMAN_USER",
-                        "SCAN_SKIPPED_NO_MESSAGE",
-                        "SCAN_SKIPPED_USER_ACKNOWLEDGED_WARNING",
-                        "SCAN_SKIPPED_MESSAGE_FROM_UNSUPPORTED_ORIGIN",
-                        "SCAN_SKIPPED_MESSAGE_SENT_DURING_SPACE_MIGRATION",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_RULES_FOUND",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_ACTION_PARAMS",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_TRIGGER",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_PERMANENT_ERROR",
-                        "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_EMPTY_RESPONSE",
-                        "SCAN_RULE_EVALUATION_SKIPPED_UNSUPPORTED_FILE_TYPE",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_NO_VIOLATION",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_BLOCK",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_WARN",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_AUDIT_ONLY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "This means no violation is detected on the given message/attachment.",
-                        "Violation is detected. The message/attachment will be blocked (or deleted if this happens in failure recovery), the user will be warned, and the violation will be logged to BIP.",
-                        "Violation is detected. The user will be warned, and the violation will be logged to BIP.",
-                        "Violation is detected and will be logged to BIP (no user-facing action performed).",
-                        "Rule fetch and evaluation were attempted but an exception occurred.",
-                        "Rule fetch was attempted but failed, so rule evaluation could not be performed.",
-                        "Rule fetch and evaluation were attempted but the scanning timed out.",
-                        "Rule fetch completed and evaluation were attempted, but all of the rules failed to be evaluated.",
-                        "An IllegalStateException is thrown when executing DLP on attachments. This could happen if the space row is missing.",
-                        "Rule fetch and evaluation is skipped because DLP is not enabled for the user.",
-                        "Rule fetch and evaluation are skipped because the user sending message is consumer.",
-                        "Rule fetch and evaluation are skipped because the user sending message is a non-human user (i.e. a bot).",
-                        "Rule fetch and evaluation are skipped because there is no message to scan. Deprecated: this should not happen since there must be message or attachment for DLP scan.",
-                        "Rule fetch and evaluation are skipped because the user has acknowledged the warning on the message that triggered the Warn violation and sent the message anyway.",
-                        "Scanning was skipped because the message originated from Interop or Babel.",
-                        "Scanning was skipped because the message was sent while the space is in migration mode. See go/migration-mode for details.",
-                        "Rule fetch happened, but rule evaluation is skipped because no rules were found.",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given action params. Deprecated. Use SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given trigger. Deprecated. Use SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable.",
-                        "Rule fetch happened, but rule evaluation is skipped because Changeling returned permanent failure while converting the attachment to text.",
-                        "Rule fetch happened, but rule evaluation is skipped because Changeling returned an empty response while converting the attachment to text.",
-                        "Rule fetch happened, but rule evaluation is skipped because file type is unsupported.",
-                        "Rules were fetched but some evaluations failed. No violation was found in the rules that were successfully evaluated.",
-                        "Rules were fetched but some evaluations failed. A blocking violation was found in the rules that were successfully evaluated. The message/attachment will be blocked, the user will be notified, and the violation will be logged to BIP. A blocking violation takes precedence over all other violation types.",
-                        "Rules were fetched but some evaluations failed. A warn violation was found in the rules that were successfully evaluated. The user will be warned, and the violation will be logged to BIP.",
-                        "Rules were fetched but some evaluations failed. An audit-only violation was found in the rules that were successfully evaluated. The violation will be logged to BIP (no user-facing action performed)."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DlpScanSummary": {
-            "description": "A summary of a DLP scan event. This is a summary and should contain the minimum amount of data required to identify and process DLP scans. It is written to Starcast and encoded & returned to the client on attachment upload.",
-            "id": "DlpScanSummary",
-            "properties": {
-                "dlpAction": {
-                    "$ref": "DlpAction"
-                },
-                "scanId": {
-                    "description": "The scan ID of the corresponding {@link DlpViolationScanRecord} in the {@link EphemeralDlpScans} Spanner table. This can be used to fetch additional details about the scan, e.g. for audit logging.",
-                    "type": "string"
-                },
-                "scanNotApplicableForContext": {
-                    "description": "Indicates that was no attempt to scan a message or attachment because it was not applicable in the given context (e.g. atomic mutuate). If this is true, scan_outcome should not be set. This flag is used to identify messages that DLP did not attempt to scan for monitoring scan coverage. Contents that DLP attempted to scan but skipped can be identified by DlpScanOutcome.SCAN_SKIPPED_* reasons. DEPRECATED: The prober can determine this from the context.",
-                    "type": "boolean"
-                },
-                "scanOutcome": {
-                    "description": "The outcome of a DLP Scan. If this is set, scan_not_applicable_for_context should not be true.",
-                    "enum": [
-                        "SCAN_UNKNOWN_OUTCOME",
-                        "SCAN_SUCCEEDED_NO_VIOLATION",
-                        "SCAN_SUCCEEDED_BLOCK",
-                        "SCAN_SUCCEEDED_WARN",
-                        "SCAN_SUCCEEDED_AUDIT_ONLY",
-                        "SCAN_FAILURE_EXCEPTION",
-                        "SCAN_FAILURE_RULE_FETCH_FAILED",
-                        "SCAN_FAILURE_TIMEOUT",
-                        "SCAN_FAILURE_ALL_RULES_FAILED",
-                        "SCAN_FAILURE_ILLEGAL_STATE_FOR_ATTACHMENTS",
-                        "SCAN_SKIPPED_EXPERIMENT_DISABLED",
-                        "SCAN_SKIPPED_CONSUMER",
-                        "SCAN_SKIPPED_NON_HUMAN_USER",
-                        "SCAN_SKIPPED_NO_MESSAGE",
-                        "SCAN_SKIPPED_USER_ACKNOWLEDGED_WARNING",
-                        "SCAN_SKIPPED_MESSAGE_FROM_UNSUPPORTED_ORIGIN",
-                        "SCAN_SKIPPED_MESSAGE_SENT_DURING_SPACE_MIGRATION",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_RULES_FOUND",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_ACTION_PARAMS",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_TRIGGER",
-                        "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_PERMANENT_ERROR",
-                        "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_EMPTY_RESPONSE",
-                        "SCAN_RULE_EVALUATION_SKIPPED_UNSUPPORTED_FILE_TYPE",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_NO_VIOLATION",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_BLOCK",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_WARN",
-                        "SCAN_SUCCEEDED_WITH_FAILURES_AUDIT_ONLY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "This means no violation is detected on the given message/attachment.",
-                        "Violation is detected. The message/attachment will be blocked (or deleted if this happens in failure recovery), the user will be warned, and the violation will be logged to BIP.",
-                        "Violation is detected. The user will be warned, and the violation will be logged to BIP.",
-                        "Violation is detected and will be logged to BIP (no user-facing action performed).",
-                        "Rule fetch and evaluation were attempted but an exception occurred.",
-                        "Rule fetch was attempted but failed, so rule evaluation could not be performed.",
-                        "Rule fetch and evaluation were attempted but the scanning timed out.",
-                        "Rule fetch completed and evaluation were attempted, but all of the rules failed to be evaluated.",
-                        "An IllegalStateException is thrown when executing DLP on attachments. This could happen if the space row is missing.",
-                        "Rule fetch and evaluation is skipped because DLP is not enabled for the user.",
-                        "Rule fetch and evaluation are skipped because the user sending message is consumer.",
-                        "Rule fetch and evaluation are skipped because the user sending message is a non-human user (i.e. a bot).",
-                        "Rule fetch and evaluation are skipped because there is no message to scan. Deprecated: this should not happen since there must be message or attachment for DLP scan.",
-                        "Rule fetch and evaluation are skipped because the user has acknowledged the warning on the message that triggered the Warn violation and sent the message anyway.",
-                        "Scanning was skipped because the message originated from Interop or Babel.",
-                        "Scanning was skipped because the message was sent while the space is in migration mode. See go/migration-mode for details.",
-                        "Rule fetch happened, but rule evaluation is skipped because no rules were found.",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given action params. Deprecated. Use SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given trigger. Deprecated. Use SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES",
-                        "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable.",
-                        "Rule fetch happened, but rule evaluation is skipped because Changeling returned permanent failure while converting the attachment to text.",
-                        "Rule fetch happened, but rule evaluation is skipped because Changeling returned an empty response while converting the attachment to text.",
-                        "Rule fetch happened, but rule evaluation is skipped because file type is unsupported.",
-                        "Rules were fetched but some evaluations failed. No violation was found in the rules that were successfully evaluated.",
-                        "Rules were fetched but some evaluations failed. A blocking violation was found in the rules that were successfully evaluated. The message/attachment will be blocked, the user will be notified, and the violation will be logged to BIP. A blocking violation takes precedence over all other violation types.",
-                        "Rules were fetched but some evaluations failed. A warn violation was found in the rules that were successfully evaluated. The user will be warned, and the violation will be logged to BIP.",
-                        "Rules were fetched but some evaluations failed. An audit-only violation was found in the rules that were successfully evaluated. The violation will be logged to BIP (no user-facing action performed)."
-                    ],
-                    "type": "string"
-                },
-                "scanTrigger": {
-                    "description": "The event that triggered the scan. This corresponds to the rule trigger configured in admin console and maps to the different things that can be scanned.",
-                    "enum": [
-                        "UNKNOWN_TRIGGER_TYPE",
-                        "MESSAGE_SENT",
-                        "ATTACHMENT_UPLOADED"
-                    ],
-                    "enumDescriptions": [
-                        "LINT.IfChange",
-                        "",
-                        "LINT.ThenChange(//depot/google3/java/com/google/apps/dynamite/v1/external/dlp/DlpTriggerInfo.java)"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DmId": {
-            "id": "DmId",
-            "properties": {
-                "dmId": {
-                    "description": "Unique server assigned Id, per Direct Message Space.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DocumentInfo": {
-            "description": "Information on a document attached to an active conference.",
-            "id": "DocumentInfo",
-            "properties": {
-                "whiteboardInfo": {
-                    "$ref": "WhiteboardInfo",
-                    "description": "A whiteboard document."
-                }
-            },
-            "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",
@@ -7667,15 +2720,6 @@
             },
             "type": "object"
         },
-        "DriveClientActionMarkup": {
-            "id": "DriveClientActionMarkup",
-            "properties": {
-                "requestFileScope": {
-                    "$ref": "RequestFileScope"
-                }
-            },
-            "type": "object"
-        },
         "DriveFollowUpRestrict": {
             "description": "Drive follow-up search restricts (e.g. \"followup:suggestions\").",
             "id": "DriveFollowUpRestrict",
@@ -7716,141 +2760,6 @@
             },
             "type": "object"
         },
-        "DriveMetadata": {
-            "description": "Annotation metadata for Drive artifacts.",
-            "id": "DriveMetadata",
-            "properties": {
-                "aclFixRequest": {
-                    "$ref": "AclFixRequest"
-                },
-                "aclFixStatus": {
-                    "$ref": "AclFixStatus"
-                },
-                "canEdit": {
-                    "description": "Can the current user edit this resource",
-                    "type": "boolean"
-                },
-                "canShare": {
-                    "description": "Can the current user share this resource",
-                    "type": "boolean"
-                },
-                "canView": {
-                    "description": "Can the current user view this resource",
-                    "type": "boolean"
-                },
-                "driveAction": {
-                    "description": "DriveAction for organizing this file in Drive. If the user does not have access to the Drive file, the value will be DriveAction.DRIVE_ACTION_UNSPECIFIED. This field is only set when part of a FileResult in a ListFilesResponse.",
-                    "enum": [
-                        "DRIVE_ACTION_UNSPECIFIED",
-                        "ADD_TO_DRIVE",
-                        "ORGANIZE",
-                        "ADD_SHORTCUT",
-                        "ADD_ANOTHER_SHORTCUT"
-                    ],
-                    "enumDescriptions": [
-                        "No organize action should be shown.",
-                        "Show \"Add to Drive\" button, for adding file that doesn't exist in Drive to Drive. Note that deleted Drive files that still exist (i.e. in your Trash) will still be ORGANIZE (this is consistent with Gmail Drive attachments).",
-                        "Show \"Move\" button, for organizing a Drive file the user has permission to move.",
-                        "Show \"Add shortcut\" button, for adding a shortcut to a Drive file the user does not have permission to move.",
-                        "Show \"Add another shortcut\" button, for Drive files the user has already created a shortcut to."
-                    ],
-                    "type": "string"
-                },
-                "driveState": {
-                    "enum": [
-                        "DRIVE_STATE_UNSPECIFIED",
-                        "IN_MY_DRIVE",
-                        "IN_TEAM_DRIVE",
-                        "SHARED_IN_DRIVE",
-                        "NOT_IN_DRIVE"
-                    ],
-                    "enumDescriptions": [
-                        "Default value",
-                        "File in My Drive",
-                        "File in Team Drive",
-                        "File in someone else's Drive, but is shared with the current user",
-                        "File not in drive"
-                    ],
-                    "type": "string"
-                },
-                "embedUrl": {
-                    "$ref": "TrustedResourceUrlProto",
-                    "description": "Output only. Trusted Resource URL for drive file embedding.",
-                    "readOnly": true
-                },
-                "encryptedDocId": {
-                    "description": "Indicates whether the Drive link contains an encrypted doc ID. If true, Dynamite should not attempt to query the doc ID in Drive Service. See go/docid-encryption for details.",
-                    "type": "boolean"
-                },
-                "encryptedResourceKey": {
-                    "description": "This is deprecated and unneeded. TODO (b/182479059): Remove this.",
-                    "type": "string"
-                },
-                "externalMimetype": {
-                    "description": "External mimetype of the Drive Resource (Useful for creating Drive URL) See: http://b/35219462",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Drive resource ID of the artifact.",
-                    "type": "string"
-                },
-                "isDownloadRestricted": {
-                    "description": "Deprecated. Whether the setting to restrict downloads is enabled for this file. This was previously used to determine whether to hide the download and print buttons in the UI, but is no longer used by clients, because Projector now independently queries Drive to ensure that we have the most up-to-date value.",
-                    "type": "boolean"
-                },
-                "isOwner": {
-                    "description": "If the current user is the Drive file's owner. The field is currently only set for Annotations for the ListFiles action (as opposed to fetching Topics/Messages with Drive annotations).",
-                    "type": "boolean"
-                },
-                "legacyUploadMetadata": {
-                    "$ref": "LegacyUploadMetadata",
-                    "description": "Only present if this DriveMetadata is converted from an UploadMetadata."
-                },
-                "mimetype": {
-                    "description": "Mimetype of the Drive Resource",
-                    "type": "string"
-                },
-                "organizationDisplayName": {
-                    "description": "The display name of the organization owning the Drive item.",
-                    "type": "string"
-                },
-                "shortcutAuthorizedItemId": {
-                    "$ref": "AuthorizedItemId",
-                    "description": "Shortcut ID of this drive file in the shared drive, which is associated with a named room this file was shared in. Shortcuts will not be created for DMs or unnamed rooms. This is populated after the DriveMetadata is migrated to shared drive. go/chat-shared-drive-uploads."
-                },
-                "shouldNotRender": {
-                    "description": "If this field is set to true, server should still contact external backends to get metadata for search but clients should not render this chip.",
-                    "type": "boolean"
-                },
-                "thumbnailHeight": {
-                    "description": "Thumbnail image of the Drive Resource",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "thumbnailUrl": {
-                    "description": "Thumbnail image of the Drive Resource",
-                    "type": "string"
-                },
-                "thumbnailWidth": {
-                    "description": "Thumbnail image of the Drive Resource",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "title": {
-                    "description": "Title of the Drive Resource",
-                    "type": "string"
-                },
-                "urlFragment": {
-                    "description": "Url string fragment that generally indicates the specific location in the linked file. Example: #header=h.123abc456. If the fragment is not present this will not be present and therefore default to an empty string. The \"#\" will not be included.",
-                    "type": "string"
-                },
-                "wrappedResourceKey": {
-                    "$ref": "WrappedResourceKey",
-                    "description": "This is considered SPII and should not be logged."
-                }
-            },
-            "type": "object"
-        },
         "DriveMimeTypeRestrict": {
             "description": "Drive mime-type search restricts (e.g. \"type:pdf\").",
             "id": "DriveMimeTypeRestrict",
@@ -7921,170 +2830,6 @@
             },
             "type": "object"
         },
-        "DynamiteMessagesScoringInfo": {
-            "description": "This is the proto for holding message level scoring information. This data is used for logging in query-api server and for testing purposes.",
-            "id": "DynamiteMessagesScoringInfo",
-            "properties": {
-                "commonContactCount": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "commonCountToContactListCountRatio": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "commonCountToMembershipCountRatio": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "creatorGaiaId": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "creatorInSearcherContactList": {
-                    "type": "boolean"
-                },
-                "crowdingMultiplier": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "dasContactCount": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "finalScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "freshnessScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "joinedSpaceAffinityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "lastReadTimestampAgeInDays": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "messageAgeInDays": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "messageSenderAffinityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "spaceId": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "spaceMembershipCount": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "topicalityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "unjoinedSpaceAffinityScore": {
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "DynamiteSpacesScoringInfo": {
-            "description": "This is the proto for holding space level scoring information. This data is used for logging in query-api server and for testing purposes.",
-            "id": "DynamiteSpacesScoringInfo",
-            "properties": {
-                "affinityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "commonContactCountAffinityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "contactsIntersectionCount": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "finalScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "freshnessScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "joinedSpacesAffinityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "lastMessagePostedTimestampSecs": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "lastReadTimestampSecs": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "memberCountScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "memberMetadataCount": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "messageScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "numAucContacts": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "smallContactListAffinityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "smallUnjoinedSpacesAffinityScore": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "spaceAgeInDays": {
-                    "format": "double",
-                    "type": "number"
-                },
-                "spaceCreationTimestampSecs": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "topicalityScore": {
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "EditMetadata": {
-            "description": "A message edit in Dynamite inserts a Babel-only item containing this field.",
-            "id": "EditMetadata",
-            "properties": {},
-            "type": "object"
-        },
-        "EditorClientActionMarkup": {
-            "id": "EditorClientActionMarkup",
-            "properties": {
-                "requestFileScopeForActiveDocument": {
-                    "$ref": "RequestFileScopeForActiveDocument"
-                }
-            },
-            "type": "object"
-        },
         "EmailAddress": {
             "description": "A person's email address.",
             "id": "EmailAddress",
@@ -8112,916 +2857,1755 @@
             },
             "type": "object"
         },
-        "EmailOwnerProto": {
-            "description": "Represents a verified owner of the given email address. Note that a single address may have many owners, and a single user may own many addresses. (All lower-case, in display form -- see com.google.gaia.client.GaiaEmail)",
-            "id": "EmailOwnerProto",
+        "EnterpriseTopazFrontendTeamsLink": {
+            "id": "EnterpriseTopazFrontendTeamsLink",
             "properties": {
-                "email": {
+                "type": {
+                    "description": "The identifying link type",
+                    "type": "string"
+                },
+                "url": {
+                    "$ref": "SafeUrlProto"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazFrontendTeamsPersonCorePhoneNumber": {
+            "id": "EnterpriseTopazFrontendTeamsPersonCorePhoneNumber",
+            "properties": {
+                "phoneNumber": {
+                    "description": "Phone number in no particular format (as comes from the Focus profile).",
+                    "type": "string"
+                },
+                "phoneUrl": {
+                    "$ref": "SafeUrlProto",
+                    "description": "Phone number URL"
+                },
+                "type": {
+                    "enum": [
+                        "UNKNOWN",
+                        "MOBILE",
+                        "OFFICE",
+                        "OTHER"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
                     "type": "string"
                 }
             },
             "type": "object"
         },
-        "EmbedClientItem": {
-            "description": "Represents an embedded object in an update. This is a wrapper class that can contain a single specific item proto in an extension field. Think of it as a base class like `Message` in Java. Each item proto must declare that it extends this proto: message ExampleObject { option (item_type) = EXAMPLE_OBJECT; extend EmbedClientItem { optional ExampleObject example_object = ; } } See go/es-embeds for details.",
-            "id": "EmbedClientItem",
+        "EnterpriseTopazSidekickAgendaEntry": {
+            "description": "An AgendaEntry, e.g., a Calendar Event.",
+            "id": "EnterpriseTopazSidekickAgendaEntry",
             "properties": {
-                "canonicalId": {
-                    "description": "The canonical ID of the embed. If absent, the canonical ID is equal to the ID; if present, then the canonical ID represents an \"equivalence class\" of embeds which really refer to the same object. (For example, the URLs http://www.foo.com/ and http://foo.com/ refer to the same object) This field may be updated periodically by background processes.",
+                "agendaItemUrl": {
+                    "description": "URL of the agenda item.",
                     "type": "string"
                 },
-                "deepLinkData": {
-                    "$ref": "DeepLinkData",
-                    "description": "Deep-linking data to take the user to the right place in a mobile app. This is only used for preview and attribution. Links that are specific to a given embed type should live on that specific embed's proto by using Link. See http://goto.google.com/mariana-design."
+                "chronology": {
+                    "description": "The chronology from the present.",
+                    "enum": [
+                        "STALE",
+                        "ALL_DAY",
+                        "PAST",
+                        "RECENTLY_PAST",
+                        "PRESENT",
+                        "NEAR_FUTURE",
+                        "FUTURE"
+                    ],
+                    "enumDescriptions": [
+                        "Stale.",
+                        "All day.",
+                        "Past.",
+                        "Recently past.",
+                        "Present.",
+                        "Near future.",
+                        "Future."
+                    ],
+                    "type": "string"
                 },
-                "id": {
-                    "description": "The ID of the embed. This corresponds to the schema.org ID, as represented in the ItemScope.id field.",
+                "creator": {
+                    "$ref": "EnterpriseTopazSidekickPerson",
+                    "description": "Person who created the event."
+                },
+                "currentUserAttendingStatus": {
+                    "description": "Attendance status for the current user making the request. This is a convenience data member in order to avoid figuring out the same by iterating the invitee list above on the caller side.",
+                    "enum": [
+                        "AWAITING",
+                        "YES",
+                        "NO",
+                        "MAYBE"
+                    ],
+                    "enumDescriptions": [
+                        "Awaiting for the user to set the status.",
+                        "Attending.",
+                        "Not attending.",
+                        "Tentatively attending."
+                    ],
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Description of the agenda item (i.e., typically, summary in calendar event).",
+                    "type": "string"
+                },
+                "document": {
+                    "description": "Items related to the current AgendaEntry. E.g., related drive/mail/groups documents.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickCommonDocument"
+                    },
+                    "type": "array"
+                },
+                "endDate": {
+                    "description": "End date \"Friday, August 26\" in the user's timezone.",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "End time (HH:mm) in the user's timezone.",
+                    "type": "string"
+                },
+                "endTimeMs": {
+                    "description": "End time in milliseconds",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "eventId": {
+                    "description": "Event id provided by Calendar API.",
+                    "type": "string"
+                },
+                "guestsCanInviteOthers": {
+                    "description": "Whether the guests can invite other guests.",
+                    "type": "boolean"
+                },
+                "guestsCanModify": {
+                    "description": "Whether the guests can modify the event.",
+                    "type": "boolean"
+                },
+                "guestsCanSeeGuests": {
+                    "description": "Whether the guests of the event can be seen. If false, the user is going to be reported as the only attendee to the meeting, even though there may be more attendees.",
+                    "type": "boolean"
+                },
+                "hangoutId": {
+                    "description": "Hangout meeting identifier.",
+                    "type": "string"
+                },
+                "hangoutUrl": {
+                    "description": "Absolute URL for the Hangout meeting.",
+                    "type": "string"
+                },
+                "invitee": {
+                    "description": "People attending the meeting.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickPerson"
+                    },
+                    "type": "array"
+                },
+                "isAllDay": {
+                    "description": "Whether the entry lasts all day.",
+                    "type": "boolean"
+                },
+                "lastModificationTimeMs": {
+                    "description": "Last time the event was modified.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Agenda item location.",
+                    "type": "string"
+                },
+                "notifyToUser": {
+                    "description": "Whether this should be notified to the user.",
+                    "type": "boolean"
+                },
+                "otherAttendeesExcluded": {
+                    "description": "Whether guest list is not returned because number of attendees is too large.",
+                    "type": "boolean"
+                },
+                "requesterIsOwner": {
+                    "description": "Whether the requester is the owner of the agenda entry.",
+                    "type": "boolean"
+                },
+                "showFullEventDetailsToUse": {
+                    "description": "Whether the details of this entry should be displayed to the user.",
+                    "type": "boolean"
+                },
+                "startDate": {
+                    "description": "Start date \"Friday, August 26\" in the user's timezone.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Start time (HH:mm) in the user's timezone.",
+                    "type": "string"
+                },
+                "startTimeMs": {
+                    "description": "Start time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "timeZone": {
+                    "description": "User's calendar timezone;",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "Title of the agenda item.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAgendaGroupCardProto": {
+            "id": "EnterpriseTopazSidekickAgendaGroupCardProto",
+            "properties": {
+                "agendaItem": {
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickAgendaItem"
+                    },
+                    "type": "array"
+                },
+                "context": {
+                    "$ref": "EnterpriseTopazSidekickAgendaGroupCardProtoContext"
+                },
+                "currentAgendaItem": {
+                    "$ref": "EnterpriseTopazSidekickAgendaItem"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAgendaGroupCardProtoContext": {
+            "description": "The context that resulted in the generation of the card.",
+            "id": "EnterpriseTopazSidekickAgendaGroupCardProtoContext",
+            "properties": {
+                "context": {
+                    "description": "User friendly free text that describes the context of the card (e.g. \"Next meeting with Bob\"). This is largely only applicable when the card is generated from a query.",
+                    "type": "string"
+                },
+                "date": {
+                    "description": "Localized free text that describes the dates represented by the card. Currently, the card will only represent a single day.",
+                    "type": "string"
+                },
+                "eventsRestrict": {
+                    "description": "Represents restrictions applied to the events requested in the user's query.",
+                    "enum": [
+                        "NONE",
+                        "NEXT_MEETING"
+                    ],
+                    "enumDescriptions": [
+                        "No specific event was requested.",
+                        "The next meeting was requested."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAgendaItem": {
+            "id": "EnterpriseTopazSidekickAgendaItem",
+            "properties": {
+                "conflictedGroup": {
+                    "$ref": "EnterpriseTopazSidekickConflictingEventsCardProto"
+                },
+                "gapBefore": {
+                    "$ref": "EnterpriseTopazSidekickGap"
+                },
+                "meeting": {
+                    "$ref": "EnterpriseTopazSidekickAgendaEntry"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAnswerAnswerList": {
+            "description": "A list of answers represented as free text.",
+            "id": "EnterpriseTopazSidekickAnswerAnswerList",
+            "properties": {
+                "labeledAnswer": {
+                    "description": "Answers that have a corresponding label.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickAnswerAnswerListLabeledAnswer"
+                    },
+                    "type": "array"
+                },
+                "type": {
+                    "description": "Answer type.",
+                    "enum": [
+                        "UNKNOWN",
+                        "PERSON_ADDRESS",
+                        "PERSON_BIRTHDAY",
+                        "PERSON_DEPARTMENT",
+                        "PERSON_DESK_LOCATION",
+                        "PERSON_EMAIL",
+                        "PERSON_JOB_TITLE",
+                        "PERSON_PHONE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAnswerAnswerListLabeledAnswer": {
+            "description": "An answer with a corresponding label.",
+            "id": "EnterpriseTopazSidekickAnswerAnswerListLabeledAnswer",
+            "properties": {
+                "answer": {
+                    "description": "The free text answer.",
+                    "type": "string"
+                },
+                "label": {
+                    "description": "A localized label for the answer (e.g. \"Cell phone\" vs \"Desk phone\").",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAnswerSuggestedQueryAnswerCard": {
+            "description": "Contains a list of suggested queries. Allows the user to determine what natural language queries they can ask Cloud Search (e.g. \"what can I search for?\").",
+            "id": "EnterpriseTopazSidekickAnswerSuggestedQueryAnswerCard",
+            "properties": {
+                "suggestedQueryCategory": {
+                    "description": "A list of queries to suggest.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickAnswerSuggestedQueryCategory"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAnswerSuggestedQueryCategory": {
+            "description": "Contains a list of suggested queries for a single category.",
+            "id": "EnterpriseTopazSidekickAnswerSuggestedQueryCategory",
+            "properties": {
+                "category": {
+                    "description": "The query list category.",
+                    "enum": [
+                        "UNKNOWN",
+                        "CALENDAR",
+                        "DOCUMENT",
+                        "PEOPLE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown.",
+                        "Calendar based queries (e.g. \"my agenda for tomorrow\").",
+                        "Document based queries (e.g. \"files shared with me\").",
+                        "People based queries (e.g. \"what is x's email address?\")."
+                    ],
+                    "type": "string"
+                },
+                "isEnabled": {
+                    "description": "Whether this category is enabled.",
+                    "type": "boolean"
+                },
+                "query": {
+                    "description": "List of suggested queries to show the user.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickAssistCardProto": {
+            "description": "Wrapper proto for the Assist cards.",
+            "id": "EnterpriseTopazSidekickAssistCardProto",
+            "properties": {
+                "agendaGroupCardProto": {
+                    "$ref": "EnterpriseTopazSidekickAgendaGroupCardProto",
+                    "description": "Agenda group card."
+                },
+                "cardMetadata": {
+                    "$ref": "EnterpriseTopazSidekickCardMetadata",
+                    "description": "Card metadata such as chronology and render mode of the card."
+                },
+                "cardType": {
+                    "description": "Card type.",
+                    "enum": [
+                        "UNKNOWN_TYPE",
+                        "AGENDA",
+                        "CHANGELISTS",
+                        "CONFLICTING_MEETINGS",
+                        "CREATE_NOTES_FOR_MEETING",
+                        "CREATE_NOTES_FOR_MEETING_REQUEST",
+                        "CUSTOMER_NEWS",
+                        "FIND_MEETING_TIME",
+                        "NEXT_MEETING",
+                        "PERSONALIZED_DOCS",
+                        "TRENDING_DOCS",
+                        "UPCOMING_TRIP",
+                        "SUMMARY",
+                        "MEETINGS",
+                        "HOMEPAGE",
+                        "SHARE_MEETING_DOCS",
+                        "DISCOVER_PEOPLE",
+                        "HOMEPAGE_V3",
+                        "AGENDA_GROUP",
+                        "WORK_IN_PROGRESS",
+                        "GET_AND_KEEP_AHEAD",
+                        "GENERIC_ANSWER_CARD",
+                        "THIRD_PARTY_ANSWER_CARD",
+                        "DOMAIN_TRENDING_DOCS",
+                        "TEAM_TRENDING_DOCS",
+                        "DOCUMENT_LIST_ANSWER_CARD",
+                        "SUGGESTED_QUERY_ANSWER_CARD",
+                        "PERSON_ANSWER_CARD",
+                        "RELATED_PEOPLE_ANSWER_CARD",
+                        "PERSON_KNOWLEDGE_CARD",
+                        "PEOPLE_SEARCH_PROMOTION_CARD"
+                    ],
+                    "enumDescriptions": [
+                        "The default type, an unknown card type.",
+                        "The user's agenda for the day.",
+                        "Changelists.",
+                        "Any group of meetings for the day that are overlapping.",
+                        "Create notes for a meeting specified in the request.",
+                        "Create notes for meeting query.",
+                        "News about your SFDC customers.",
+                        "Find a time for two people to meet.",
+                        "The user's next non-declined meeting.",
+                        "Important documents for you since you have viewed them in the last month and there's some action going on.",
+                        "Documents that are trending in your company. A TRENDING_DOCS card can be of two types: TRENDING_IN_COLLABORATORS (i.e., Stay in the Loop) and TRENDING_IN_DOMAIN (i.e., Popular Content). Use DOMAIN_TRENDING_DOCS/TEAM_TRENDING_DOCS instead.",
+                        "An upcoming trip with all trip information along with calendar events in the destination timezone.",
+                        "The Morning/Evening Summary Card for the next working day.",
+                        "A meeting. When requesting meetings, the service will return a MEETING card for each meeting the user has in his agenda.",
+                        "All cards related to the homepage (agenda, conflicting-meetings, summary, etc...). This type should no longer be used. Use HOMEPAGE_V3 instead.",
+                        "A card to with specifics to share meeting documents with all attendees.",
+                        "Represents a set of users that the requesting user has low affinity with.",
+                        "All cards related to the homepage-v3 (agenda-group, WIP, etc...)",
+                        "A group of agenda-events (meeting, conflicts)",
+                        "The documents that you were recently working on.",
+                        "(v3) The \"get and keep ahead\" card for today and tomorrow",
+                        "Generic answer card.",
+                        "Third party answer card.",
+                        "Documents that are trending in your company/domain (i.e., Popular Content).",
+                        "Documents that are trending in your team (i.e., Stay in the Loop).",
+                        "Documents that match the user's query (e.g. sheets shared with me).",
+                        "A help card that provides examples of queries the user can ask.",
+                        "Answer card for a single person (e.g. what is x's phone number).",
+                        "Answer card for a list of people related to the person that is the subject of the query (e.g. who reports to x).",
+                        "Knowledge card for a single person and their related people.",
+                        "People Search promotion card."
+                    ],
+                    "type": "string"
+                },
+                "conflictingMeetingsCard": {
+                    "$ref": "EnterpriseTopazSidekickConflictingEventsCardProto",
+                    "description": "Conflicting events card."
+                },
+                "documentListCard": {
+                    "$ref": "EnterpriseTopazSidekickDocumentPerCategoryList",
+                    "description": "Answer card for documents that are applicable to the current query."
+                },
+                "documentsWithMentions": {
+                    "$ref": "EnterpriseTopazSidekickDocumentPerCategoryList",
+                    "description": "Documents with mentions."
+                },
+                "findMeetingTimeCard": {
+                    "$ref": "EnterpriseTopazSidekickFindMeetingTimeCardProto",
+                    "description": "Find meeting time card."
+                },
+                "genericAnswerCard": {
+                    "$ref": "EnterpriseTopazSidekickGenericAnswerCard",
+                    "description": "Generic answer card."
+                },
+                "getAndKeepAheadCard": {
+                    "$ref": "EnterpriseTopazSidekickGetAndKeepAheadCardProto",
+                    "description": "Get and keep ahead card."
+                },
+                "meeting": {
+                    "$ref": "EnterpriseTopazSidekickAgendaEntry",
+                    "description": "Meeting card."
+                },
+                "meetingNotesCard": {
+                    "$ref": "EnterpriseTopazSidekickMeetingNotesCardProto",
+                    "description": "Meeting notes card."
+                },
+                "meetingNotesCardRequest": {
+                    "$ref": "EnterpriseTopazSidekickMeetingNotesCardRequest",
+                    "description": "Request for meeting notes card."
+                },
+                "peopleDisambiguationCard": {
+                    "$ref": "EnterpriseTopazSidekickPeopleDisambiguationCard",
+                    "description": "The people disambiguation card."
+                },
+                "peoplePromotionCard": {
+                    "$ref": "PeoplePromotionCard",
+                    "description": "People Search promotion card."
+                },
+                "personAnswerCard": {
+                    "$ref": "EnterpriseTopazSidekickPeopleAnswerPersonAnswerCard",
+                    "description": "Answer card that represents a single person."
+                },
+                "personProfileCard": {
+                    "$ref": "EnterpriseTopazSidekickPersonProfileCard",
+                    "description": "Full profile card."
+                },
+                "personalizedDocsCard": {
+                    "$ref": "EnterpriseTopazSidekickPersonalizedDocsCardProto",
+                    "description": "Card with recommended documents for the user."
+                },
+                "relatedPeopleAnswerCard": {
+                    "$ref": "EnterpriseTopazSidekickPeopleAnswerRelatedPeopleAnswerCard",
+                    "description": "Answer card that represents a list of people related to a person."
+                },
+                "shareMeetingDocsCard": {
+                    "$ref": "EnterpriseTopazSidekickShareMeetingDocsCardProto",
+                    "description": "Sahre meeting docs card."
+                },
+                "sharedDocuments": {
+                    "$ref": "EnterpriseTopazSidekickDocumentPerCategoryList",
+                    "description": "Shared documents."
+                },
+                "suggestedQueryAnswerCard": {
+                    "$ref": "EnterpriseTopazSidekickAnswerSuggestedQueryAnswerCard",
+                    "description": "Answer card for what natural language queries the user can ask."
+                },
+                "thirdPartyAnswerCard": {
+                    "$ref": "ThirdPartyGenericCard",
+                    "description": "Third party answer cards."
+                },
+                "workInProgressCardProto": {
+                    "$ref": "EnterpriseTopazSidekickRecentDocumentsCardProto",
+                    "description": "Work In Progress card."
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickCardMetadata": {
+            "description": "Card metadata.",
+            "id": "EnterpriseTopazSidekickCardMetadata",
+            "properties": {
+                "cardCategory": {
+                    "description": "Declares a preference for how this card should be packed in MSCR. All cards in a response must correspond to a single category. As a result, cards may be dropped from the response if this field is set. Any card that does not match the category of the card with the highest priority in the response will be dropped.",
+                    "enum": [
+                        "DEFAULT",
+                        "ANSWER",
+                        "KNOWLEDGE",
+                        "HOMEPAGE"
+                    ],
+                    "enumDescriptions": [
+                        "Let MSCR decide how this card should be packed. Most cards should choose this type. This type should largely be considered equivalent to ANSWER. However, this is not guaranteed to be the case as the request to MSCR may override the static configuration.",
+                        "This card should be rendered as an answer card.",
+                        "This card should be rendered as a knowledge card (a non-organic result).",
+                        "This card should be rendered in the Homepage."
+                    ],
+                    "type": "string"
+                },
+                "cardId": {
+                    "description": "An ID to identify the card and match actions to it. Be thoughtful of new card IDs since actions will be associated to that ID. E.g., if two card IDs collide, the system will think that the actions have been applied to the same card. Similarly, if EAS can return multiple cards of the same type (e.g., Meetings), ensure that the card_id identifies a given instance of the card so that, e.g., dismissals only affect the dismissed card as opposed to affecting all meeting cards.",
+                    "type": "string"
+                },
+                "chronology": {
+                    "description": "Chronology.",
+                    "enum": [
+                        "UNKNOWN",
+                        "PAST",
+                        "RECENTLY_PAST",
+                        "PRESENT",
+                        "NEAR_FUTURE",
+                        "FUTURE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown chronology (default).",
+                        "Past.",
+                        "Recently past.",
+                        "Present.",
+                        "Near future.",
+                        "Future."
+                    ],
+                    "type": "string"
+                },
+                "debugInfo": {
+                    "description": "Debug info (only reported if request's debug_level > 0).",
+                    "type": "string"
+                },
+                "nlpMetadata": {
+                    "$ref": "EnterpriseTopazSidekickNlpMetadata",
+                    "description": "Information about the NLP done to get the card."
+                },
+                "rankingParams": {
+                    "$ref": "EnterpriseTopazSidekickRankingParams",
+                    "description": "Ranking params."
+                },
+                "renderMode": {
+                    "description": "Render mode.",
+                    "enum": [
+                        "UNKNOWN_RENDER",
+                        "COLLAPSED",
+                        "EXPANDED"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown mode (default).",
+                        "Collapsed.",
+                        "Expanded."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickCommonDebugInfo": {
+            "description": "Container of debugging information in all object levels. Extend as needed.",
+            "id": "EnterpriseTopazSidekickCommonDebugInfo",
+            "properties": {
+                "message": {
+                    "description": "Debug message.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickCommonDocument": {
+            "description": "Representation of a document. NEXT_TAG: 15",
+            "id": "EnterpriseTopazSidekickCommonDocument",
+            "properties": {
+                "accessType": {
+                    "description": "Access type, i.e., whether the user has access to the document or not.",
+                    "enum": [
+                        "UNKNOWN_ACCESS",
+                        "ALLOWED",
+                        "NOT_ALLOWED"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown access type.",
+                        "Access allowed.",
+                        "Access not allowed."
+                    ],
+                    "type": "string"
+                },
+                "debugInfo": {
+                    "$ref": "EnterpriseTopazSidekickCommonDebugInfo",
+                    "description": "Information for debugging."
+                },
+                "documentId": {
+                    "description": "Document id.",
+                    "type": "string"
+                },
+                "driveDocumentMetadata": {
+                    "$ref": "EnterpriseTopazSidekickCommonDocumentDriveDocumentMetadata",
+                    "description": "Drive document metadata."
+                },
+                "genericUrl": {
+                    "description": "Generic Drive-based url in the format of drive.google.com/open to be used for deeplink",
+                    "type": "string"
+                },
+                "justification": {
+                    "$ref": "EnterpriseTopazSidekickCommonDocumentJustification",
+                    "description": "Justification on why the document is selected."
+                },
+                "mimeType": {
+                    "description": "MIME type",
                     "type": "string"
                 },
                 "provenance": {
-                    "$ref": "Provenance",
-                    "description": "The provenance of the embed, populated when the embed originated from a web fetch. The provenance captures information about the web page the embed had originated, like the URL that was retrieved and the retrieved URL's canonical form. This is useful in the case where the URL shared by the URL redirects (e.g., in the case of a shortened URL)."
-                },
-                "renderId": {
-                    "description": "The ID used to identify the embed during rendering. This field will match ID, if set, otherwise it will be the ID of the parent activity. This field is only populated on the server for client use and is not persisted to storage.",
+                    "description": "Document provenance.",
+                    "enum": [
+                        "UNKNOWN_PROVENANCE",
+                        "CALENDAR_DESCRIPTION",
+                        "CALENDAR_ATTACHMENT",
+                        "MINED",
+                        "CALENDAR_ASSIST_ATTACHMENT"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown provenance.",
+                        "Calendar event description.",
+                        "Calendar event attachment.",
+                        "Mined (extracted by some offline/online analysis).",
+                        "Attachment created by enterprise assist."
+                    ],
                     "type": "string"
                 },
-                "signature": {
-                    "description": "Signature of the embed, used for verification.",
+                "reason": {
+                    "description": "Justification of why this document is being returned.",
+                    "enum": [
+                        "UNKNOWN",
+                        "TRENDING_IN_COLLABORATORS",
+                        "TRENDING_IN_DOMAIN",
+                        "FREQUENTLY_VIEWED",
+                        "FREQUENTLY_EDITED",
+                        "NEW_UPDATES",
+                        "NEW_COMMENTS",
+                        "EVENT_DESCRIPTION",
+                        "EVENT_ATTACHMENT",
+                        "EVENT_METADATA_ATTACHMENT",
+                        "MINED_DOCUMENT",
+                        "NEW_MENTIONS",
+                        "NEW_SHARES"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown justification.",
+                        "Popular documents within collaborators.",
+                        "Popular documents within the domain.",
+                        "Documents being reviewed frequently by the current user .",
+                        "Documents being edited frequently by the current user .",
+                        "Documents updated since user's last visit.",
+                        "Documents that receive comments since user's last visit.",
+                        "Documents in the calendar event description.",
+                        "Documents in the calendar event attachments section.",
+                        "Documents attached in calendar event metadata instead of the attachment section. Event metadata is not visible to the final user. Enterprise assist uses this metadata to store auto-generated documents such as meeting notes.",
+                        "Documents mined, and so, probably related to the request context. For example, this category includes documents related to a meeting.",
+                        "Documents that contains mentions of the user.",
+                        "Documents that are shared with the user."
+                    ],
                     "type": "string"
                 },
-                "transientData": {
-                    "$ref": "TransientData",
-                    "description": "Transient generic data that will not be saved on the server."
+                "snippet": {
+                    "description": "A sampling of the text from the document.",
+                    "type": "string"
+                },
+                "thumbnailUrl": {
+                    "description": "Thumbnail URL.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "Title of the document.",
+                    "type": "string"
                 },
                 "type": {
-                    "description": "The first value in `type` determines which extension field will be set. When creating an EmbedClientItem, you only need to set the first (primary) type in this field. When the server receives the item, it will populate the full type list using the parent annotations in the ItemType enum.",
+                    "description": "Type of the document.",
+                    "enum": [
+                        "UNKNOWN",
+                        "DOCUMENT",
+                        "PRESENTATION",
+                        "SPREADSHEET",
+                        "PDF",
+                        "IMAGE",
+                        "BINARY_BLOB",
+                        "FUSION_TABLE",
+                        "FOLDER",
+                        "DRAWING",
+                        "VIDEO",
+                        "FORM",
+                        "LINK_URL",
+                        "LINK_GO",
+                        "LINK_GOO_GL",
+                        "LINK_BIT_LY",
+                        "LINK_GMAIL",
+                        "LINK_MAILTO",
+                        "VIDEO_YOUTUBE",
+                        "VIDEO_LIVE",
+                        "GROUPS",
+                        "NEWS",
+                        "SITES",
+                        "HANGOUT",
+                        "AUDIO",
+                        "MS_WORD",
+                        "MS_POWERPOINT",
+                        "MS_EXCEL",
+                        "MS_OUTLOOK"
+                    ],
+                    "enumDescriptions": [
+                        "If the type is unknown or not represented in this enum.",
+                        "Drive document types Writely, Word, etc.",
+                        "Presently, PowerPoint, etc.",
+                        "Trix, Excel, etc.",
+                        "File types for Gdrive objects are below. PDF.",
+                        "Image.",
+                        "Fall-back for unknown Gdrive types.",
+                        "Fusion table.",
+                        "Folder.",
+                        "Drawing.",
+                        "Video.",
+                        "Form.",
+                        "Link formats uncategorized URL links",
+                        "meaningful links that should be renderred specifically",
+                        "Link to goo.gl.",
+                        "Link to bit_ly.",
+                        "Link to Gmail.",
+                        "Mailto link.",
+                        "Videos Youtube videos.",
+                        "Live streams (e.g., liveplayer.googleplex.com)",
+                        "Other types. Google Groups.",
+                        "Google News.",
+                        "Google Sites.",
+                        "Google Hangout.",
+                        "Audio files.",
+                        "Microsoft-specific file types.",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "url": {
+                    "description": "Absolute URL of the document.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickCommonDocumentDriveDocumentMetadata": {
+            "description": "Meta data for drive documents.",
+            "id": "EnterpriseTopazSidekickCommonDocumentDriveDocumentMetadata",
+            "properties": {
+                "documentId": {
+                    "description": "The drive document cosmo id. Client could use the id to build a URL to open a document. Please use Document.document_id.",
+                    "type": "string"
+                },
+                "isPrivate": {
+                    "description": "Additional field to identify whether a document is private since scope set to LIMITED can mean both that the doc is private or that it's shared with others. is_private indicates whether the doc is not shared with anyone except for the owner.",
+                    "type": "boolean"
+                },
+                "lastCommentTimeMs": {
+                    "description": "Timestamp of the most recent comment added to the document in milliseconds since epoch.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "lastEditTimeMs": {
+                    "description": "Timestamp of the most recent edit from the current user in milliseconds since epoch.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "lastModificationTimeMillis": {
+                    "description": "Last modification time of the document (independent of the user that modified it).",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "lastUpdatedTimeMs": {
+                    "description": "Timestamp of the last updated time of the document in milliseconds since epoch.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "lastViewTimeMs": {
+                    "description": "Timestamp of the most recent view from the current user in milliseconds since epoch.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "owner": {
+                    "$ref": "EnterpriseTopazSidekickCommonPerson",
+                    "description": "The owner of the document."
+                },
+                "scope": {
+                    "description": "ACL scope of the document which identifies the sharing status of the doc (e.g., limited, shared with link, team drive, ...).",
+                    "enum": [
+                        "UNKNOWN_DOCUMENT_SCOPE",
+                        "LIMITED",
+                        "DASHER_DOMAIN_WITH_LINK",
+                        "DASHER_DOMAIN",
+                        "PUBLIC_WITH_LINK",
+                        "PUBLIC",
+                        "TEAM_DRIVE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickCommonDocumentJustification": {
+            "description": "Justification of why we are reporting the document.",
+            "id": "EnterpriseTopazSidekickCommonDocumentJustification",
+            "properties": {
+                "justification": {
+                    "description": "A locale aware message that explains why this document was selected.",
+                    "type": "string"
+                },
+                "reason": {
+                    "description": "Reason on why the document is selected. Populate for trending documents.",
+                    "enum": [
+                        "UNKNOWN",
+                        "TRENDING_IN_COLLABORATORS",
+                        "TRENDING_IN_DOMAIN",
+                        "FREQUENTLY_VIEWED",
+                        "FREQUENTLY_EDITED",
+                        "NEW_UPDATES",
+                        "NEW_COMMENTS",
+                        "EVENT_DESCRIPTION",
+                        "EVENT_ATTACHMENT",
+                        "EVENT_METADATA_ATTACHMENT",
+                        "MINED_DOCUMENT",
+                        "NEW_MENTIONS",
+                        "NEW_SHARES"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown justification.",
+                        "Popular documents within collaborators.",
+                        "Popular documents within the domain.",
+                        "Documents being reviewed frequently by the current user .",
+                        "Documents being edited frequently by the current user .",
+                        "Documents updated since user's last visit.",
+                        "Documents that receive comments since user's last visit.",
+                        "Documents in the calendar event description.",
+                        "Documents in the calendar event attachments section.",
+                        "Documents attached in calendar event metadata instead of the attachment section. Event metadata is not visible to the final user. Enterprise assist uses this metadata to store auto-generated documents such as meeting notes.",
+                        "Documents mined, and so, probably related to the request context. For example, this category includes documents related to a meeting.",
+                        "Documents that contains mentions of the user.",
+                        "Documents that are shared with the user."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickCommonPerson": {
+            "description": "Common representation of a person.",
+            "id": "EnterpriseTopazSidekickCommonPerson",
+            "properties": {
+                "birthday": {
+                    "$ref": "EnterpriseTopazSidekickCommonPersonBirthday",
+                    "description": "The birthday."
+                },
+                "cellPhone": {
+                    "description": "Cell phone number.",
+                    "type": "string"
+                },
+                "department": {
+                    "description": "The department the person works in (e.g. Engineering).",
+                    "type": "string"
+                },
+                "deskLocation": {
+                    "description": "Desk location (e.g. US-MTV-PR55-5-5B1I).",
+                    "type": "string"
+                },
+                "deskPhone": {
+                    "description": "Work desk phone number.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The full name.",
+                    "type": "string"
+                },
+                "email": {
+                    "description": "Email.",
+                    "type": "string"
+                },
+                "familyName": {
+                    "description": "The last name.",
+                    "type": "string"
+                },
+                "fullAddress": {
+                    "description": "The fully formatted address (e.g. 1255 Pear Avenue, Mountain View 94043, United States).",
+                    "type": "string"
+                },
+                "gaiaId": {
+                    "description": "This field is deprecated. The obfuscated_id should be used instead.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "givenName": {
+                    "description": "The first name.",
+                    "type": "string"
+                },
+                "jobTitle": {
+                    "description": "The person's job title (e.g. Software Engineer).",
+                    "type": "string"
+                },
+                "manager": {
+                    "$ref": "EnterpriseTopazSidekickCommonPerson",
+                    "description": "The manager."
+                },
+                "obfuscatedId": {
+                    "description": "The obfuscated GAIA ID.",
+                    "type": "string"
+                },
+                "photoUrl": {
+                    "description": "The URL for the Focus profile picture.",
+                    "type": "string"
+                },
+                "streetAddress": {
+                    "description": "The street address (e.g. 1255 Pear Avenue).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickCommonPersonBirthday": {
+            "id": "EnterpriseTopazSidekickCommonPersonBirthday",
+            "properties": {
+                "value": {
+                    "description": "Unstructured birthday.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickConflictingEventsCardProto": {
+            "description": "Conflicting meetings card proto.",
+            "id": "EnterpriseTopazSidekickConflictingEventsCardProto",
+            "properties": {
+                "conflictingEvent": {
+                    "description": "All the events that conflict with main_event.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickAgendaEntry"
+                    },
+                    "type": "array"
+                },
+                "mainEvent": {
+                    "$ref": "EnterpriseTopazSidekickAgendaEntry",
+                    "description": "The event identified as being the most important."
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickDocumentGroup": {
+            "description": "Represents a mapping between a document type and its corresponding documents. Use for Work in Progress card in v1 homepage.",
+            "id": "EnterpriseTopazSidekickDocumentGroup",
+            "properties": {
+                "groupType": {
+                    "description": "Document group type",
+                    "enum": [
+                        "UNKNOWN_TYPE",
+                        "ALL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown type.",
+                        "A mix of all the document types."
+                    ],
+                    "type": "string"
+                },
+                "personalizedDocument": {
+                    "description": "The list of corresponding documents.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickCommonDocument"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickDocumentPerCategoryList": {
+            "id": "EnterpriseTopazSidekickDocumentPerCategoryList",
+            "properties": {
+                "documents": {
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickDocumentPerCategoryListDocumentPerCategoryListEntry"
+                    },
+                    "type": "array"
+                },
+                "helpMessage": {
+                    "description": "Localized message explaining how the documents were derived (e.g. from the last 30 days activity). This field is optional.",
+                    "type": "string"
+                },
+                "listType": {
+                    "enum": [
+                        "UNKNOWN_LIST_TYPE",
+                        "MENTIONS",
+                        "SHARES",
+                        "NEEDS_ATTENTION",
+                        "VIEWS",
+                        "EDITS"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "All documents in the list correspond to one of the mention categories.",
+                        "All documents in the list correspond to one of the share categories.",
+                        "A mixture of document categories that correspond to documents that need the users attention (e.g. documents that have been explicitly shared with the user but have not been viewed and documents where the user was mentioned but has not replied).",
+                        "All documents in the list correspond to one of the view categories.",
+                        "All documents in the list correspond to one of the edit categories."
+                    ],
+                    "type": "string"
+                },
+                "listTypeDescription": {
+                    "description": "Description of the types of documents present in the list.",
+                    "type": "string"
+                },
+                "responseMessage": {
+                    "description": "Response message in case no documents are present in the card.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickDocumentPerCategoryListDocumentPerCategoryListEntry": {
+            "id": "EnterpriseTopazSidekickDocumentPerCategoryListDocumentPerCategoryListEntry",
+            "properties": {
+                "category": {
+                    "enum": [
+                        "UNKNOWN_DOCUMENT",
+                        "ACTIONABLE",
+                        "VIEWED",
+                        "REPLIED",
+                        "MENTION_VIEWED",
+                        "MENTION_REPLIED",
+                        "MENTION_NOT_VIEWED",
+                        "SHARED_AND_VIEWED",
+                        "SHARED_NOT_VIEWED",
+                        "EDITED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "Mention categories. The mention has been viewed by the user, but the user has not replied.",
+                        "The user has replied to the mention.",
+                        "The mention has not been viewed by the user.",
+                        "Share categories. Consists of documents that have been explicitly shared with the user. Document has been viewed.",
+                        "Document has not been viewed.",
+                        "Document has been edited."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "EnterpriseTopazSidekickCommonDocument"
+                },
+                "rationale": {
+                    "description": "Reason this document was selected.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickFindMeetingTimeCardProto": {
+            "description": "Response to find meeting time among a set of people.",
+            "id": "EnterpriseTopazSidekickFindMeetingTimeCardProto",
+            "properties": {
+                "commonAvailableTimeSlots": {
+                    "description": "Slots when all attendees have availability.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickTimeSlot"
+                    },
+                    "type": "array"
+                },
+                "invitees": {
+                    "description": "Invitees to the event.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickPerson"
+                    },
+                    "type": "array"
+                },
+                "requester": {
+                    "$ref": "EnterpriseTopazSidekickPerson",
+                    "description": "Requester."
+                },
+                "scheduledMeeting": {
+                    "$ref": "EnterpriseTopazSidekickScheduledMeeting",
+                    "description": "Details about the scheduled meeting, if one exists."
+                },
+                "skippedInvitees": {
+                    "description": "Invitees that have been skipped in the computation, most likely because they are groups.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickPerson"
+                    },
+                    "type": "array"
+                },
+                "timeBoundaries": {
+                    "$ref": "EnterpriseTopazSidekickTimeSlot",
+                    "description": "Min and max timestamp used to find a common available timeslot."
+                },
+                "timezoneId": {
+                    "description": "Timezone ID.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickGap": {
+            "id": "EnterpriseTopazSidekickGap",
+            "properties": {
+                "displayRemainingTime": {
+                    "description": "Localized time string in the format: 1 hour 15 minutes",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Localized time string in the format:(Locale CZ) 8:30 odp.",
+                    "type": "string"
+                },
+                "endTimeMs": {
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "remainingTime": {
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Localized time string in the format:(Locale CZ) 8:30 odp.",
+                    "type": "string"
+                },
+                "startTimeMs": {
+                    "format": "uint64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickGenericAnswerCard": {
+            "id": "EnterpriseTopazSidekickGenericAnswerCard",
+            "properties": {
+                "answer": {
+                    "description": "The answer.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "Title or header of the card.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickGetAndKeepAheadCardProto": {
+            "description": "Get and keep ahead card",
+            "id": "EnterpriseTopazSidekickGetAndKeepAheadCardProto",
+            "properties": {
+                "declinedEvents": {
+                    "$ref": "EnterpriseTopazSidekickGetAndKeepAheadCardProtoDeclinedEvents"
+                },
+                "mentionedDocuments": {
+                    "$ref": "EnterpriseTopazSidekickDocumentPerCategoryList"
+                },
+                "sharedDocuments": {
+                    "$ref": "EnterpriseTopazSidekickDocumentPerCategoryList"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickGetAndKeepAheadCardProtoDeclinedEvents": {
+            "description": "A list of events where all guests declined.",
+            "id": "EnterpriseTopazSidekickGetAndKeepAheadCardProtoDeclinedEvents",
+            "properties": {
+                "events": {
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickAgendaEntry"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickMeetingNotesCardError": {
+            "description": "Errors in the creation of meeting notes.",
+            "id": "EnterpriseTopazSidekickMeetingNotesCardError",
+            "properties": {
+                "description": {
+                    "description": "The description of the reason why create-meeting-notes failed.",
+                    "type": "string"
+                },
+                "event": {
+                    "$ref": "EnterpriseTopazSidekickAgendaEntry",
+                    "description": "The event to request meeting notes creation"
+                },
+                "reason": {
+                    "description": "The reason why create-meeting-notes failed.",
+                    "enum": [
+                        "NONE",
+                        "NOT_OWNER",
+                        "UNKNOWN"
+                    ],
+                    "enumDescriptions": [
+                        "No reason (default value).",
+                        "The user is not an owner.",
+                        "Unknown reason."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickMeetingNotesCardProto": {
+            "description": "Information about the meeting notes created.",
+            "id": "EnterpriseTopazSidekickMeetingNotesCardProto",
+            "properties": {
+                "event": {
+                    "$ref": "EnterpriseTopazSidekickAgendaEntry",
+                    "description": "The event to request meeting notes creation."
+                },
+                "fileId": {
+                    "description": "Google Drive ID (a.k.a. resource ID) of the file.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "Title we want to show for meeting notes in the answer card",
+                    "type": "string"
+                },
+                "url": {
+                    "description": "New URL.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickMeetingNotesCardRequest": {
+            "description": "Meeting notes card request.",
+            "id": "EnterpriseTopazSidekickMeetingNotesCardRequest",
+            "properties": {
+                "canCreateFor": {
+                    "description": "Who are the meeting notes created for.",
                     "items": {
                         "enum": [
                             "UNKNOWN",
-                            "ACTION_V2",
-                            "ADD_ACTION_V2",
-                            "AGGREGATE_RATING_V2",
-                            "ARTICLE_V2",
-                            "ASSESS_ACTION_V2",
-                            "AUDIO_OBJECT_V2",
-                            "BASIC_INTERACTION_V2",
-                            "BLOG_POSTING_V2",
-                            "BLOG_V2",
-                            "BOOK_V2",
-                            "BUY_ACTION_V2",
-                            "CHECK_IN_ACTION_V2",
-                            "CHECKIN_V2",
-                            "COLLEXION_V2",
-                            "COMMENT_ACTION_V2",
-                            "COMMENT_V2",
-                            "COMMUNICATE_ACTION_V2",
-                            "CONSUME_ACTION_V2",
-                            "CREATE_ACTION_V2",
-                            "CREATIVE_WORK_V2",
-                            "DISCOVER_ACTION_V2",
-                            "DOCUMENT_OBJECT_V2",
-                            "DRAWING_OBJECT_V2",
-                            "DRIVE_OBJECT_V2",
-                            "EMOTISHARE_V2",
-                            "ENTRY_POINT_V2",
-                            "EVENT_TIME_V2",
-                            "EVENT_V2",
-                            "FILE_OBJECT_V2",
-                            "FIND_ACTION_V2",
-                            "FINANCIAL_QUOTE_V2",
-                            "FORM_OBJECT_V2",
-                            "GEO_COORDINATES_V2",
-                            "GOOGLE_OFFER_V2",
-                            "HANGOUT_CHAT_MESSAGE",
-                            "HANGOUT_QUOTE",
-                            "HANGOUT_V2",
-                            "HOA_PLUS_EVENT_V2",
-                            "IMAGE_OBJECT_V2",
-                            "INTERACT_ACTION_V2",
-                            "INTERACTION_V2",
-                            "LISTEN_ACTION_V2",
-                            "LOCAL_BUSINESS_V2",
-                            "LOCAL_PLUS_PHOTO_ALBUM_V2",
-                            "MAGAZINE_V2",
-                            "MEDIA_OBJECT_V2",
-                            "MOBILE_APPLICATION_V2",
-                            "MOVIE_V2",
-                            "MUSIC_ALBUM_V2",
-                            "MUSIC_GROUP_V2",
-                            "MUSIC_PLAYLIST_V2",
-                            "MUSIC_RECORDING_V2",
-                            "NEWS_ARTICLE_V2",
-                            "OFFER_V2",
-                            "ORGANIZATION_V2",
-                            "ORGANIZE_ACTION_V2",
-                            "PERSON_V2",
-                            "PLACE_REVIEW_V2",
-                            "PLACE_V2",
-                            "PLAN_ACTION_V2",
-                            "PLAY_MUSIC_ALBUM_V2",
-                            "PLAY_MUSIC_TRACK_V2",
-                            "PLAY_OBJECT_V2",
-                            "PLUS_AUDIO_V2",
-                            "PLUS_EVENT_V2",
-                            "PLUS_MEDIA_COLLECTION_V2",
-                            "PLUS_MEDIA_OBJECT_V2",
-                            "PLUS_PAGE_V2",
-                            "PLUS_PHOTOS_ADDED_TO_COLLECTION_V2",
-                            "PLUS_PHOTO_ALBUM_V2",
-                            "PLUS_PHOTO_COLLECTION_V2",
-                            "PLUS_PHOTO_V2",
-                            "PLUS_POST_V2",
-                            "PLUS_RESHARE_V2",
-                            "PLUS_SOFTWARE_APPLICATION_V2",
-                            "POLL_OPTION_V2",
-                            "POLL_V2",
-                            "POSTAL_ADDRESS_V2",
-                            "PRESENTATION_OBJECT_V2",
-                            "PRODUCT_REVIEW_V2",
-                            "RATING_V2",
-                            "REACT_ACTION_V2",
-                            "RESERVATION_V2",
-                            "RESERVE_ACTION_V2",
-                            "REVIEW_V2",
-                            "REVIEW_ACTION_V2",
-                            "SOFTWARE_APPLICATION_V2",
-                            "SPREADSHEET_OBJECT_V2",
-                            "SQUARE_INVITE_V2",
-                            "SQUARE_V2",
-                            "STICKER_V2",
-                            "STORY_V2",
-                            "THING_V2",
-                            "TRADE_ACTION_V2",
-                            "DEPRECATED_TOUR_OBJECT_V2",
-                            "TV_EPISODE_V2",
-                            "TV_SERIES_V2",
-                            "UPDATE_ACTION_V2",
-                            "VIEW_ACTION_V2",
-                            "VIDEO_OBJECT_V2",
-                            "VIDEO_GALLERY_V2",
-                            "WANT_ACTION_V2",
-                            "WEB_PAGE_V2",
-                            "WRITE_ACTION_V2",
-                            "YOUTUBE_CHANNEL_V2",
-                            "GOOGLE_USER_PHOTO_V2",
-                            "GOOGLE_USER_PHOTO_ALBUM",
-                            "GOOGLE_PHOTO_RECIPE",
-                            "THING",
-                            "CREATIVE_WORK",
-                            "EVENT",
-                            "INTANGIBLE",
-                            "ORGANIZATION",
-                            "PERSON",
-                            "PLACE",
-                            "PRODUCT",
-                            "ARTICLE",
-                            "BLOG_POSTING",
-                            "NEWS_ARTICLE",
-                            "SCHOLARLY_ARTICLE",
-                            "BLOG",
-                            "BOOK",
-                            "COMMENT",
-                            "ITEM_LIST",
-                            "MAP",
-                            "MEDIA_OBJECT",
-                            "AUDIO_OBJECT",
-                            "IMAGE_OBJECT",
-                            "MUSIC_VIDEO_OBJECT",
-                            "VIDEO_OBJECT",
-                            "MOVIE",
-                            "MUSIC_PLAYLIST",
-                            "MUSIC_ALBUM",
-                            "MUSIC_RECORDING",
-                            "PAINTING",
-                            "PHOTOGRAPH",
-                            "RECIPE",
-                            "REVIEW",
-                            "SCULPTURE",
-                            "SOFTWARE_APPLICATION",
-                            "MOBILE_APPLICATION",
-                            "WEB_APPLICATION",
-                            "TV_EPISODE",
-                            "TV_SEASON",
-                            "TV_SERIES",
-                            "WEB_PAGE",
-                            "ABOUT_PAGE",
-                            "CHECKOUT_PAGE",
-                            "COLLECTION_PAGE",
-                            "IMAGE_GALLERY",
-                            "VIDEO_GALLERY",
-                            "CONTACT_PAGE",
-                            "ITEM_PAGE",
-                            "PROFILE_PAGE",
-                            "SEARCH_RESULTS_PAGE",
-                            "WEB_PAGE_ELEMENT",
-                            "SITE_NAVIGATION_ELEMENT",
-                            "TABLE",
-                            "WP_AD_BLOCK",
-                            "WP_FOOTER",
-                            "WP_HEADER",
-                            "WP_SIDEBAR",
-                            "APP_INVITE",
-                            "EMOTISHARE",
-                            "BUSINESS_EVENT",
-                            "CHILDRENS_EVENT",
-                            "COMEDY_EVENT",
-                            "DANCE_EVENT",
-                            "EDUCATION_EVENT",
-                            "FESTIVAL",
-                            "FOOD_EVENT",
-                            "LITERARY_EVENT",
-                            "MUSIC_EVENT",
-                            "SALE_EVENT",
-                            "SOCIAL_EVENT",
-                            "SPORTS_EVENT",
-                            "THEATER_EVENT",
-                            "VISUAL_ARTS_EVENT",
-                            "RESERVATION",
-                            "TRAVEL_EVENT",
-                            "CORPORATION",
-                            "EDUCATIONAL_ORGANIZATION",
-                            "COLLEGE_OR_UNIVERSITY",
-                            "ELEMENTARY_SCHOOL",
-                            "HIGH_SCHOOL",
-                            "MIDDLE_SCHOOL",
-                            "PRESCHOOL",
-                            "SCHOOL",
-                            "GOVERNMENT_ORGANIZATION",
-                            "LOCAL_BUSINESS",
-                            "ANIMAL_SHELTER",
-                            "AUTOMOTIVE_BUSINESS",
-                            "AUTO_BODY_SHOP",
-                            "AUTO_DEALER",
-                            "AUTO_PARTS_STORE",
-                            "AUTO_RENTAL",
-                            "AUTO_REPAIR",
-                            "AUTO_WASH",
-                            "GAS_STATION",
-                            "MOTORCYCLE_DEALER",
-                            "MOTORCYCLE_REPAIR",
-                            "CHILD_CARE",
-                            "DRY_CLEANING_OR_LAUNDRY",
-                            "EMERGENCY_SERVICE",
-                            "FIRE_STATION",
-                            "HOSPITAL",
-                            "POLICE_STATION",
-                            "EMPLOYMENT_AGENGY",
-                            "ENTERTAINMENT_BUSINESS",
-                            "ADULT_ENTERTAINMENT",
-                            "AMUSEMENT_PARK",
-                            "ART_GALLERY",
-                            "CASINO",
-                            "COMEDY_CLUB",
-                            "MOVIE_THEATER",
-                            "NIGHT_CLUB",
-                            "FINANCIAL_SERVICE",
-                            "ACCOUNTING_SERVICE",
-                            "AUTOMATED_TELLER",
-                            "BANK_OR_CREDIT_UNION",
-                            "INSURANCE_AGENCY",
-                            "FOOD_ESTABLISHMENT",
-                            "BAKERY",
-                            "BAR_OR_PUB",
-                            "BREWERY",
-                            "CAFE_OR_COFFEE_SHOP",
-                            "FAST_FOOD_RESTAURANT",
-                            "ICE_CREAM_SHOP",
-                            "RESTAURANT",
-                            "WINERY",
-                            "GOVERNMENT_OFFICE",
-                            "POST_OFFICE",
-                            "HEALTH_AND_BEAUTY_BUSINESS",
-                            "BEAUTY_SALON",
-                            "DAY_SPA",
-                            "HAIR_SALON",
-                            "HEALTH_CLUB",
-                            "NAIL_SALON",
-                            "TATTOO_PARLOR",
-                            "HOME_AND_CONSTRUCTION_BUSINESS",
-                            "ELECTRICIAN",
-                            "GENERAL_CONTRACTOR",
-                            "HVAC_BUSINESS",
-                            "HOUSE_PAINTER",
-                            "LOCKSMITH",
-                            "MOVING_COMPANY",
-                            "PLUMBER",
-                            "ROOFING_CONTRACTOR",
-                            "INTERNET_CAFE",
-                            "LIBRARY",
-                            "LODGING_BUSINESS",
-                            "BED_AND_BREAKFAST",
-                            "HOSTEL",
-                            "HOTEL",
-                            "MOTEL",
-                            "MEDICAL_ORGANIZATION",
-                            "DENTIST",
-                            "MEDICAL_CLINIC",
-                            "OPTICIAN",
-                            "PHARMACY",
-                            "PHYSICIAN",
-                            "VETERINARY_CARE",
-                            "PROFESSIONAL_SERVICE",
-                            "ATTORNEY",
-                            "NOTARY",
-                            "RADIO_STATION",
-                            "REAL_ESTATE_AGENT",
-                            "RECYCLING_CENTER",
-                            "SELF_STORAGE",
-                            "SHOPPING_CENTER",
-                            "SPORTS_ACTIVITY_LOCATION",
-                            "BOWLING_ALLEY",
-                            "EXERCISE_GYM",
-                            "GOLF_COURSE",
-                            "PUBLIC_SWIMMING_POOL",
-                            "SKI_RESORT",
-                            "SPORTS_CLUB",
-                            "STADIUM_OR_ARENA",
-                            "TENNIS_COMPLEX",
-                            "STORE",
-                            "BIKE_STORE",
-                            "BOOK_STORE",
-                            "CLOTHING_STORE",
-                            "COMPUTER_STORE",
-                            "CONVENIENCE_STORE",
-                            "DEPARTMENT_STORE",
-                            "ELECTRONICS_STORE",
-                            "FLORIST",
-                            "FURNITURE_STORE",
-                            "GARDEN_STORE",
-                            "GROCERY_STORE",
-                            "HARDWARE_STORE",
-                            "HOBBY_SHOP",
-                            "HOME_GOODS_STORE",
-                            "JEWELRY_STORE",
-                            "LIQUOR_STORE",
-                            "MENS_CLOTHING_STORE",
-                            "MOBILE_PHONE_STORE",
-                            "MOVIE_RENTAL_STORE",
-                            "MUSIC_STORE",
-                            "OFFICE_EQUIPMENT_STORE",
-                            "OUTLET_STORE",
-                            "PAWN_SHOP",
-                            "PET_STORE",
-                            "SHOE_STORE",
-                            "SPORTING_GOODS_STORE",
-                            "TIRE_SHOP",
-                            "TOY_STORE",
-                            "WHOLESALE_STORE",
-                            "TELEVISION_STATION",
-                            "TOURIST_INFORMATION_CENTER",
-                            "TRAVEL_AGENCY",
-                            "PERFORMING_GROUP",
-                            "MUSIC_GROUP",
-                            "ADMINISTRATIVE_AREA",
-                            "CITY",
-                            "COUNTRY",
-                            "STATE",
-                            "CIVIC_STRUCTURE",
-                            "AIRPORT",
-                            "AQUARIUM",
-                            "BEACH",
-                            "BUS_STATION",
-                            "BUS_STOP",
-                            "CAMPGROUND",
-                            "CEMETERY",
-                            "CREMATORIUM",
-                            "EVENT_VENUE",
-                            "GOVERNMENT_BUILDING",
-                            "CITY_HALL",
-                            "COURTHOUSE",
-                            "DEFENCE_ESTABLISHMENT",
-                            "EMBASSY",
-                            "LEGISLATIVE_BUILDING",
-                            "MUSEUM",
-                            "MUSIC_VENUE",
-                            "PARK",
-                            "PARKING_FACILITY",
-                            "PERFORMING_ARTS_THEATER",
-                            "PLACE_OF_WORSHIP",
-                            "BUDDHIST_TEMPLE",
-                            "CATHOLIC_CHURCH",
-                            "CHURCH",
-                            "HINDU_TEMPLE",
-                            "MOSQUE",
-                            "SYNAGOGUE",
-                            "PLAYGROUND",
-                            "R_V_PARK",
-                            "RESIDENCE",
-                            "APARTMENT_COMPLEX",
-                            "GATED_RESIDENCE_COMMUNITY",
-                            "SINGLE_FAMILY_RESIDENCE",
-                            "TOURIST_ATTRACTION",
-                            "SUBWAY_STATION",
-                            "TAXI_STAND",
-                            "TRAIN_STATION",
-                            "ZOO",
-                            "LANDFORM",
-                            "BODY_OF_WATER",
-                            "CANAL",
-                            "LAKE_BODY_OF_WATER",
-                            "OCEAN_BODY_OF_WATER",
-                            "POND",
-                            "RESERVOIR",
-                            "RIVER_BODY_OF_WATER",
-                            "SEA_BODY_OF_WATER",
-                            "WATERFALL",
-                            "CONTINENT",
-                            "MOUNTAIN",
-                            "VOLCANO",
-                            "LANDMARKS_OR_HISTORICAL_BUILDINGS",
-                            "USER_INTERACTION",
-                            "USER_PLUS_ONES",
-                            "ENUMERATION",
-                            "BOOK_FORMAT_TYPE",
-                            "ITEM_AVAILABILITY",
-                            "OFFER_ITEM_CONDITION",
-                            "JOB_POSTING",
-                            "LANGUAGE",
-                            "OFFER",
-                            "QUANTITY",
-                            "DISTANCE",
-                            "DURATION",
-                            "ENERGY",
-                            "MASS",
-                            "RATING",
-                            "AGGREGATE_RATING",
-                            "STRUCTURED_VALUE",
-                            "CONTACT_POINT",
-                            "POSTAL_ADDRESS",
-                            "GEO_COORDINATES",
-                            "GEO_SHAPE",
-                            "NUTRITION_INFORMATION",
-                            "PRESENTATION_OBJECT",
-                            "DOCUMENT_OBJECT",
-                            "SPREADSHEET_OBJECT",
-                            "FORM_OBJECT",
-                            "DRAWING_OBJECT",
-                            "PLACE_REVIEW",
-                            "FILE_OBJECT",
-                            "PLAY_MUSIC_TRACK",
-                            "PLAY_MUSIC_ALBUM",
-                            "MAGAZINE",
-                            "CAROUSEL_FRAME",
-                            "PLUS_EVENT",
-                            "HANGOUT",
-                            "HANGOUT_BROADCAST",
-                            "HANGOUT_CONSUMER",
-                            "CHECKIN",
-                            "EXAMPLE_OBJECT",
-                            "SQUARE",
-                            "SQUARE_INVITE",
-                            "PLUS_PHOTO",
-                            "PLUS_PHOTO_ALBUM",
-                            "LOCAL_PLUS_PHOTO_ALBUM",
-                            "PRODUCT_REVIEW",
-                            "FINANCIAL_QUOTE",
-                            "DEPRECATED_TOUR_OBJECT",
-                            "PLUS_PAGE",
-                            "GOOGLE_CHART",
-                            "PLUS_PHOTOS_ADDED_TO_COLLECTION",
-                            "RECOMMENDED_PEOPLE",
-                            "PLUS_POST",
-                            "DATE",
-                            "DRIVE_OBJECT_COLLECTION",
-                            "NEWS_MEDIA_ORGANIZATION",
-                            "DYNAMITE_ATTACHMENT_METADATA",
-                            "DYNAMITE_MESSAGE_METADATA"
+                            "MYSELF",
+                            "ALL_ATTENDEES"
                         ],
                         "enumDescriptions": [
-                            "Largely deprecated, effectively an error condition and should not be in storage.",
-                            "Embeds V2 types",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "The action of checking in, as opposed to a \"check-in\".",
-                            "",
-                            "",
-                            "The act of commenting, which might result in a comment.",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "Boswell story (see goto/boswell)",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "A photo stored in photo service owned by a Google account user. This is distinct from PlusPhoto as it isn't tied to GPlus, but is instead intended to be a more general photo tied to a google user.",
-                            "A photo album in photo service owned by a Google account user. This is distinct from PlusPhotoAlbum as it isn't tied to GPlus, but is instead intended to be a general photo album tied to a google user.",
-                            "An embed used to create a single photo in photo service. This type is never stored but is used to create a GOOGLE_USER_PHOTO_V2 or PLUS_PHOTO_V2 embed.",
-                            "Embeds V1 types",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "CREATIVE_WORK subtypes",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "EVENT subtypes",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "ORGANIZATION subtypes",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "PLACE subtypes",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "NOTE(jpanzer): This is a badly designed hierarchy and we should avoid depending on Event properties inside UserInteractions as much as possible IMHO.",
-                            "",
-                            "Intangibles, primarily used as sub-objects of other types",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "CREATIVE_WORK extensions",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "Single frame for http://goto/carousel.",
-                            "EVENT extensions",
-                            "No declared proto. Used only as a base type for now.",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "NOTE(melchang): These correspond to http://schema.org/WebPage/Community and http://schema.org/WebPage/CommunityInvite. See b/7653610 for why these are \"SQUARE\" and not \"COMMUNITY\".",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            "Data visualizations. See http://code.google.com/apis/chart/index.html",
-                            "",
-                            "A collection of people that have been recommended to a user.",
-                            "A Google+ post.",
-                            "An http://schema.org/Date unstructured ISO-8859 timestamp string.",
-                            "Embed representing a collection of multiple Drive objects.",
-                            "https://schema.org/NewsMediaOrganization",
-                            "Deprecated in favor of DYNAMITE_MESSAGE_METADATA",
-                            "Used for Dynamite message metadata in Hangouts"
+                            "Unknown (default).",
+                            "For the requester.",
+                            "For all the meeting attendees."
                         ],
                         "type": "string"
                     },
                     "type": "array"
+                },
+                "error": {
+                    "$ref": "EnterpriseTopazSidekickMeetingNotesCardError",
+                    "description": "The error and reason if known error occured."
+                },
+                "event": {
+                    "$ref": "EnterpriseTopazSidekickAgendaEntry",
+                    "description": "The event to request meeting notes creation"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickNlpMetadata": {
+            "description": "Metadata about the NLP interpretation of the query.",
+            "id": "EnterpriseTopazSidekickNlpMetadata",
+            "properties": {
+                "confidence": {
+                    "description": "Confidence of the interpretation that generated this card.",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPeopleAnswerDisambiguationInfo": {
+            "description": "Metadata for disambiguation.",
+            "id": "EnterpriseTopazSidekickPeopleAnswerDisambiguationInfo",
+            "properties": {
+                "disambiguation": {
+                    "description": "A list of people that also matched the query. This list is not complete.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickPeopleAnswerDisambiguationInfoDisambiguationPerson"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The name that was extracted from the query. This may be in the form of the given name, last name, full name, LDAP, or email address. This name can be considered suitable for displaying to the user and can largely be considered to be normalized (e.g. \"Bob's\" -> \"Bob\").",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPeopleAnswerDisambiguationInfoDisambiguationPerson": {
+            "description": "A person that also matches the query, but was not selected due to a lower affinity with the requesting user.",
+            "id": "EnterpriseTopazSidekickPeopleAnswerDisambiguationInfoDisambiguationPerson",
+            "properties": {
+                "person": {
+                    "$ref": "EnterpriseTopazSidekickCommonPerson",
+                    "description": "The profile of this person."
+                },
+                "query": {
+                    "description": "The query that can be used to produce an answer card with the same attribute, but for this person.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPeopleAnswerPeopleAnswerCardHeader": {
+            "description": "Recommended header to display for the card.",
+            "id": "EnterpriseTopazSidekickPeopleAnswerPeopleAnswerCardHeader",
+            "properties": {
+                "title": {
+                    "description": "The suggested title to display. This defaults to the user's query.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPeopleAnswerPersonAnswerCard": {
+            "description": "An answer card for a single person.",
+            "id": "EnterpriseTopazSidekickPeopleAnswerPersonAnswerCard",
+            "properties": {
+                "answer": {
+                    "description": "List of answers.",
+                    "items": {
+                        "$ref": "SafeHtmlProto"
+                    },
+                    "type": "array"
+                },
+                "answerText": {
+                    "$ref": "EnterpriseTopazSidekickAnswerAnswerList",
+                    "description": "List of answers."
+                },
+                "disambiguationInfo": {
+                    "$ref": "EnterpriseTopazSidekickPeopleAnswerDisambiguationInfo",
+                    "description": "Disambiguation information."
+                },
+                "header": {
+                    "$ref": "EnterpriseTopazSidekickPeopleAnswerPeopleAnswerCardHeader",
+                    "description": "The header to display for the card."
+                },
+                "responseStatus": {
+                    "description": "The response status.",
+                    "enum": [
+                        "UNKNOWN",
+                        "SUCCESS",
+                        "MISSING_PERSON",
+                        "MISSING_DATA"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown.",
+                        "Success.",
+                        "No such person was found in the user's domain.",
+                        "A person was found to match the query, but an answer could not be obtained."
+                    ],
+                    "type": "string"
+                },
+                "statusMessage": {
+                    "description": "Localized user friendly message to display to the user in the case of missing data or an error.",
+                    "type": "string"
+                },
+                "subject": {
+                    "$ref": "EnterpriseTopazSidekickCommonPerson",
+                    "description": "The profile of the person that was the subject of the query."
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPeopleAnswerRelatedPeopleAnswerCard": {
+            "description": "An answer card for a list of people that are related to the subject of the query.",
+            "id": "EnterpriseTopazSidekickPeopleAnswerRelatedPeopleAnswerCard",
+            "properties": {
+                "disambiguationInfo": {
+                    "$ref": "EnterpriseTopazSidekickPeopleAnswerDisambiguationInfo",
+                    "description": "Disambiguation information."
+                },
+                "header": {
+                    "$ref": "EnterpriseTopazSidekickPeopleAnswerPeopleAnswerCardHeader",
+                    "description": "The header to display for the card."
+                },
+                "relatedPeople": {
+                    "description": "A list of people that are related to the query subject.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickCommonPerson"
+                    },
+                    "type": "array"
+                },
+                "relationType": {
+                    "description": "Defines the type of relation the list of people have with the subject of the card.",
+                    "enum": [
+                        "UNKNOWN",
+                        "DIRECT_REPORTS",
+                        "MANAGER",
+                        "PEERS"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown.",
+                        "Direct reports.",
+                        "The manager.",
+                        "The teammates/peers of the subject."
+                    ],
+                    "type": "string"
+                },
+                "responseStatus": {
+                    "description": "The response status.",
+                    "enum": [
+                        "UNKNOWN",
+                        "SUCCESS",
+                        "MISSING_PERSON",
+                        "MISSING_DATA"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown.",
+                        "Success.",
+                        "No such person was found in the user's domain.",
+                        "A person was found to match the query, but an answer could not be obtained."
+                    ],
+                    "type": "string"
+                },
+                "statusMessage": {
+                    "description": "Localized user friendly message to display to the user in the case of missing data or an error.",
+                    "type": "string"
+                },
+                "subject": {
+                    "$ref": "EnterpriseTopazSidekickCommonPerson",
+                    "description": "The profile of the person that was the subject of the query."
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPeopleDisambiguationCard": {
+            "id": "EnterpriseTopazSidekickPeopleDisambiguationCard",
+            "properties": {
+                "person": {
+                    "description": "Candidate persons for the query.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickCommonPerson"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPerson": {
+            "description": "Person.",
+            "id": "EnterpriseTopazSidekickPerson",
+            "properties": {
+                "affinityLevel": {
+                    "description": "The level of affinity this person has with the requesting user.",
+                    "enum": [
+                        "UNKNOWN",
+                        "LOW",
+                        "MEDIUM",
+                        "HIGH"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "attendingStatus": {
+                    "description": "Attendance status of the person when included in a meeting event.",
+                    "enum": [
+                        "AWAITING",
+                        "YES",
+                        "NO",
+                        "MAYBE"
+                    ],
+                    "enumDescriptions": [
+                        "Awaiting for the user to set the status.",
+                        "Attending.",
+                        "Not attending.",
+                        "Tentatively attending."
+                    ],
+                    "type": "string"
+                },
+                "email": {
+                    "description": "Email.",
+                    "type": "string"
+                },
+                "gaiaId": {
+                    "description": "Gaia id.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "isGroup": {
+                    "description": "Whether the invitee is a group.",
+                    "type": "boolean"
+                },
+                "name": {
+                    "description": "Name.",
+                    "type": "string"
+                },
+                "obfuscatedGaiaId": {
+                    "description": "Obfuscated Gaia id.",
+                    "type": "string"
+                },
+                "photoUrl": {
+                    "description": "Absolute URL to the profile photo of the person.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPersonProfileCard": {
+            "id": "EnterpriseTopazSidekickPersonProfileCard",
+            "properties": {
+                "relatedPeople": {
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickPersonProfileCardRelatedPeople"
+                    },
+                    "type": "array"
+                },
+                "subject": {
+                    "$ref": "EnterpriseTopazSidekickCommonPerson",
+                    "description": "The subject of the card."
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPersonProfileCardRelatedPeople": {
+            "id": "EnterpriseTopazSidekickPersonProfileCardRelatedPeople",
+            "properties": {
+                "relatedPerson": {
+                    "description": "Related people.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickCommonPerson"
+                    },
+                    "type": "array"
+                },
+                "relation": {
+                    "description": "Relation type.",
+                    "enum": [
+                        "UNKNOWN",
+                        "MANAGER",
+                        "DIRECT_REPORT"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickPersonalizedDocsCardProto": {
+            "description": "Personalized docs card proto.",
+            "id": "EnterpriseTopazSidekickPersonalizedDocsCardProto",
+            "properties": {
+                "documentGroup": {
+                    "description": "Document group.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickDocumentGroup"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickRankingParams": {
+            "description": "Ranking params.",
+            "id": "EnterpriseTopazSidekickRankingParams",
+            "properties": {
+                "endTimeMs": {
+                    "description": "The end-time that this object will expect to occur. If the type is marked as FIXED, then this end-time will persist after bidding. If the type is marked as FLEXIBLE, this field is NOT expected to be filled and will be filled in after it has won a bid. Expected to be set when type is set to FIXED.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "priority": {
+                    "description": "The priority to determine between objects that have the same start_time_ms The lower-value of priority == ranked higher. Max-priority = 0. Expected to be set for all types.",
+                    "enum": [
+                        "UNKNOWN",
+                        "CRITICAL",
+                        "IMPORTANT",
+                        "HIGH",
+                        "NORMAL",
+                        "BEST_EFFORT"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown (default).",
+                        "Critical.",
+                        "Important.",
+                        "High.",
+                        "Normal.",
+                        "Best effort."
+                    ],
+                    "type": "string"
+                },
+                "score": {
+                    "description": "The score of the card to be used to break priority-ties",
+                    "format": "float",
+                    "type": "number"
+                },
+                "spanMs": {
+                    "description": "The span that this card will take in the stream Expected to be set when type is set to FLEXIBLE.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "startTimeMs": {
+                    "description": "The start-time that this object will bid-for If the type is marked as FIXED, then this start-time will persist after bidding. If the type is marked as FLEXIBLE, then it will occur at the given time or sometime after the requested time. Expected to be set for all types.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The packing type of this object.",
+                    "enum": [
+                        "FIXED",
+                        "FLEXIBLE"
+                    ],
+                    "enumDescriptions": [
+                        "Fixed, i.e., the card is time sensitive.",
+                        "Flexible, i.e., the card is not time sensitive."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickRecentDocumentsCardProto": {
+            "id": "EnterpriseTopazSidekickRecentDocumentsCardProto",
+            "properties": {
+                "document": {
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickCommonDocument"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickScheduledMeeting": {
+            "description": "Details about scheduled meetings.",
+            "id": "EnterpriseTopazSidekickScheduledMeeting",
+            "properties": {
+                "meetingLocation": {
+                    "description": "The meeting location.",
+                    "type": "string"
+                },
+                "meetingTime": {
+                    "$ref": "EnterpriseTopazSidekickTimeSlot",
+                    "description": "The meeting time slot."
+                },
+                "meetingTitle": {
+                    "description": "The meeting title.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickShareMeetingDocsCardProto": {
+            "description": "Share meeting docs card proto.",
+            "id": "EnterpriseTopazSidekickShareMeetingDocsCardProto",
+            "properties": {
+                "document": {
+                    "description": "Documents to share for the given meeting.",
+                    "items": {
+                        "$ref": "EnterpriseTopazSidekickCommonDocument"
+                    },
+                    "type": "array"
+                },
+                "event": {
+                    "$ref": "EnterpriseTopazSidekickAgendaEntry",
+                    "description": "Event."
+                }
+            },
+            "type": "object"
+        },
+        "EnterpriseTopazSidekickTimeSlot": {
+            "description": "Slot of time.",
+            "id": "EnterpriseTopazSidekickTimeSlot",
+            "properties": {
+                "endTimeDay": {
+                    "description": "Day end time at the user's timezone.",
+                    "type": "string"
+                },
+                "endTimeHourAndMinute": {
+                    "description": "Hour and minute of the end time at the user's timezone.",
+                    "type": "string"
+                },
+                "endTimeInMillis": {
+                    "description": "End time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "startTimeDay": {
+                    "description": "Day start time at user's timezone.",
+                    "type": "string"
+                },
+                "startTimeHourAndMinute": {
+                    "description": "Hour and minute of the start time at the user's timezone.",
+                    "type": "string"
+                },
+                "startTimeInMillis": {
+                    "description": "Start time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -9125,35 +4709,6 @@
             },
             "type": "object"
         },
-        "EventAnnotation": {
-            "id": "EventAnnotation",
-            "properties": {
-                "type": {
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "value": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "EventProto": {
-            "description": "Represents the invitees or other users associated with a Google+ Event (see http://goto/events-backend-design).",
-            "id": "EventProto",
-            "properties": {
-                "eventId": {
-                    "description": "Event IDs consist of alphanumeric characters and colons. Currently required.",
-                    "type": "string"
-                },
-                "memberType": {
-                    "description": "The type of Event members to consider, e.g. \"all members\" vs. \"owners\" vs. \"admins\". These are defined by legacy_relation_id values in social.graph.storage.EdgeTypeEnum.EdgeType enum options in social/graph/storage/proto/id.proto. See event.pb (defined in production/config/cdd/socialgraph/mixer_config/prod/node_type_config) for all valid edge types associated with event. Currently required.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "FacetBucket": {
             "description": "A bucket in a facet is the basic unit of operation. A bucket can comprise either a single value OR a contiguous range of values, depending on the type of the field bucketed. FacetBucket is currently used only for returning the response object.",
             "id": "FacetBucket",
@@ -9259,18 +4814,6 @@
             },
             "type": "object"
         },
-        "FilterCreated": {
-            "description": "A filter was created.",
-            "id": "FilterCreated",
-            "properties": {},
-            "type": "object"
-        },
-        "FilterDeleted": {
-            "description": "A filter was deleted.",
-            "id": "FilterDeleted",
-            "properties": {},
-            "type": "object"
-        },
         "FilterOptions": {
             "description": "Filter options to be applied on query.",
             "id": "FilterOptions",
@@ -9286,191 +4829,6 @@
             },
             "type": "object"
         },
-        "FilterUpdate": {
-            "description": "HistoryRecord for changes associated with a filter, namely: FILTER_CREATED FILTER_DELETED",
-            "id": "FilterUpdate",
-            "properties": {
-                "filterCreated": {
-                    "$ref": "FilterCreated"
-                },
-                "filterDeleted": {
-                    "$ref": "FilterDeleted"
-                },
-                "filterId": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FixedFooter": {
-            "description": "A persistent (sticky) footer that is added to the bottom of the card.",
-            "id": "FixedFooter",
-            "properties": {
-                "buttons": {
-                    "items": {
-                        "$ref": "Button"
-                    },
-                    "type": "array"
-                },
-                "primaryButton": {
-                    "$ref": "TextButton"
-                },
-                "secondaryButton": {
-                    "$ref": "TextButton"
-                }
-            },
-            "type": "object"
-        },
-        "Folder": {
-            "id": "Folder",
-            "properties": {
-                "id": {
-                    "description": "Folder mapping id.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "message": {
-                    "description": "One for each copy of the message in the IMAP folder.",
-                    "items": {
-                        "$ref": "ImapsyncFolderAttributeFolderMessage"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "FolderAttribute": {
-            "description": "This is the content of //imapsync/folder attribute.",
-            "id": "FolderAttribute",
-            "properties": {
-                "folder": {
-                    "description": "List of all IMAP folders where the message presents.",
-                    "items": {
-                        "$ref": "Folder"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "FormAction": {
-            "id": "FormAction",
-            "properties": {
-                "actionMethodName": {
-                    "description": "Apps script function that should be invoked in the developer's apps script when the containing element is clicked/activated.",
-                    "type": "string"
-                },
-                "loadIndicator": {
-                    "enum": [
-                        "SPINNER",
-                        "NONE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "parameters": {
-                    "items": {
-                        "$ref": "ActionParameter"
-                    },
-                    "type": "array"
-                },
-                "persistValues": {
-                    "description": "Indicates whether form values persist after the action. When false, the Apps Script is responsible for persisting values, by setting any form field values using the formInputs in the event. Disabling this behavior can be used if the add-on needs the ability to clear form fields, for example, as with persistent values, there is no means for clearing existing values. When disabling persistent values, it is strongly recommended that the add-on use LoadIndicator.SPINNER for all events, as this locks the UI to ensure no changes are made by the user while the action is being processed. When using LoadIndicator.NONE for any of the actions, persistent values are recommended, as it ensures that any changes made by the user after form / on change actions are sent to the server are not overwritten by the response. Persistent values disabled by default. While we recommend persistent values be used in the typical use case, we do not enable by default, as doing so would change the current behavior of existing add-ons in prod.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "FormatMetadata": {
-            "description": "Annotation metadata for markup formatting",
-            "id": "FormatMetadata",
-            "properties": {
-                "fontColor": {
-                    "description": "Font color is set if and only if format_type is FONT_COLOR. The components are stored as (alpha << 24) | (red << 16) | (green << 8) | blue. Clients should always set the alpha component to 0xFF. NEXT TAG: 3",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "formatType": {
-                    "description": "LINT.ThenChange(//depot/google3/apps/dynamite/v1/web/datakeys/annotated_span.proto)",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "BOLD",
-                        "ITALIC",
-                        "STRIKE",
-                        "SOURCE_CODE",
-                        "MONOSPACE",
-                        "HIDDEN",
-                        "MONOSPACE_BLOCK",
-                        "UNDERLINE",
-                        "FONT_COLOR",
-                        "BULLETED_LIST",
-                        "BULLETED_LIST_ITEM",
-                        "CLIENT_HIDDEN"
-                    ],
-                    "enumDescriptions": [
-                        "Default value for the enum.",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Inline monospace.",
-                        "",
-                        "Multi-line monospace block.",
-                        "",
-                        "",
-                        "Encloses BULLETED_LIST_ITEM annotations.",
-                        "Must cover the whole line including the newline",
-                        "character at the end. Not used anymore."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Formatting": {
-            "description": "Formatting information for a segment.",
-            "id": "Formatting",
-            "properties": {
-                "bold": {
-                    "type": "boolean"
-                },
-                "highlight": {
-                    "description": "This indicates that the segment should be rendered as highlighted or visually emphasized.",
-                    "type": "boolean"
-                },
-                "italics": {
-                    "type": "boolean"
-                },
-                "strikethrough": {
-                    "type": "boolean"
-                },
-                "style": {
-                    "description": "If set, this indicates that the segment should be rendered with the specified style. The absence of an explicit style represents \"no style\", i.e. the segment can be rendered with the default style chosen by the application.",
-                    "enum": [
-                        "UNKNOWN_STYLE",
-                        "HEADING_1",
-                        "HEADING_2",
-                        "HEADING_3",
-                        "HEADING_4"
-                    ],
-                    "enumDescriptions": [
-                        "This represents a style that is unknown (e.g. a new style was introduced but not supported by older mobile app versions) and should generally not be used as a value in a proto. If the segment does not need to be rendered with a special style, the 'style' field should simply be left unset. A reasonable fallback for an unknown style is to render the segment in the default style.",
-                        "The most important heading to the least important heading.",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "underline": {
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
         "FreshnessOptions": {
             "description": "Indicates which freshness property to use when adjusting search ranking for an item. Fresher, more recent dates indicate higher quality. Use the freshness option property that best works with your data. For fileshare documents, last modified time is most relevant. For calendar event data, the time when the event occurs is a more relevant freshness indicator. In this way, calendar events that occur closer to the time of the search query are considered higher quality and ranked accordingly.",
             "id": "FreshnessOptions",
@@ -9487,118 +4845,6 @@
             },
             "type": "object"
         },
-        "FuseboxItem": {
-            "description": "The Item message is the read interface for user data (traditionally referred to as a \"message\", such as a mail message or a chat message, but generalized to encompass other types such as tasks) and stored in Tingle. Each Item is associated with a single Thread. An Item contains three classes of data. (1): Item \"fields\" are common to items of all message types (e.g. mail, chat, task, etc.) and are identified by the ItemFieldSpec.FetchType enum when fetching Items. (2): Item \"attributes\" represent data associated with an Item that is stored on behalf of the client but to which the fusebox and storage layers are otherwise agnostic. (3): Item \"parts\" are application-defined protocol buffers that affect how the Item is indexed. Item parts are referenced as extensions to the ItemParts message. By default the application specifies the index terms associated with an Item part. For performance sensitive applications, the storage layer can be modified to understand and index data types natively.",
-            "id": "FuseboxItem",
-            "properties": {
-                "attributes": {
-                    "$ref": "Attributes"
-                },
-                "creationTimeMicroseconds": {
-                    "description": "The creation time of the Item in micro seconds.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "history": {
-                    "$ref": "History"
-                },
-                "itemKey": {
-                    "$ref": "MultiKey",
-                    "description": "The key is used to refer to an item. Note that every field of the MultiKey is unique to the Item, and thus the Item can be looked up by any of the fields."
-                },
-                "labels": {
-                    "$ref": "Labels"
-                },
-                "lastModificationTimeUs": {
-                    "description": "The modification time of the Item in micro seconds. Modifications to the message include label addition, deletion, etc.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "lockerReferences": {
-                    "$ref": "References",
-                    "description": "go/lockpicker Locker counterpart of references."
-                },
-                "matchInfo": {
-                    "$ref": "MatchInfo"
-                },
-                "parts": {
-                    "$ref": "ItemParts",
-                    "description": "Type-specific data are represented as extensions to the ItemParts message."
-                },
-                "readTs": {
-                    "description": "The read timestamp at which this item was read. This is a temporary field used to check if two items streamed during dual reading were read at the same timestamp. This will be populated by Fusebox RPCs. \"DO NOT USE UNLESS YOU TALK TO FUSEBOX TEAM (gmail-fusebox@)\".",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "references": {
-                    "$ref": "References",
-                    "description": "References to attachments, video attachments in Youtube and Hangout messages."
-                },
-                "snippet": {
-                    "description": "The snippet is a brief bit of text describing this item.",
-                    "type": "string"
-                },
-                "threadKey": {
-                    "$ref": "MultiKey",
-                    "description": "The key of the Thread with which this Item is associated."
-                },
-                "threadLocator": {
-                    "description": "A base64 encoded and encrypted string generated from the Gaia Id and the thread id. Used to generate the permalink for this thread, exposed from Gmail API.",
-                    "type": "string"
-                },
-                "triggers": {
-                    "$ref": "Triggers"
-                },
-                "version": {
-                    "description": "The latest history operation id that resulted in a mutation of the item.",
-                    "format": "uint64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FuseboxItemThreadMatchInfo": {
-            "description": "In the context of a search, the MatchInfo contains information about which Items matched the query.",
-            "id": "FuseboxItemThreadMatchInfo",
-            "properties": {
-                "clusterId": {
-                    "description": "If SearchQuery.Options.Clustering is present, the query will be treated as a cluster query, and this field may be populated with the cluster ID of the cluster to which this thread belongs, if any. The cluster ID will be a label on the message.",
-                    "type": "string"
-                },
-                "lastMatchingItemId": {
-                    "description": "The server id of the last item that matched the query. This is always set, regardless of the compute_matching_items_per_thread option. This is the value by which search results are sorted, in descending (i.e. newest first) order.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "lastMatchingItemKey": {
-                    "$ref": "MultiKey",
-                    "description": "The MultiKey of the last item that matched the query. This is always set, regardless of the compute_matching_items_per_thread option. This is the value by which search results are sorted, in descending (i.e. newest first) order."
-                },
-                "matchingItemKey": {
-                    "description": "If SearchQuery.Options.compute_matching_items_per_thread, this field will contain the keys of all items that matched the query, in ascending order. Note that this option requires extra computation.",
-                    "items": {
-                        "$ref": "MultiKey"
-                    },
-                    "type": "array"
-                },
-                "rank": {
-                    "$ref": "Rank",
-                    "description": "The rank of this ItemThread in the result set of the query. This rank may be used to sort ItemThreads in proper order. Ranks are specific to a query, and stable for a given query at a specific time."
-                }
-            },
-            "type": "object"
-        },
-        "FuseboxPrefUpdatePreState": {
-            "description": "If the Value field is not set this means the pref did not exist.",
-            "id": "FuseboxPrefUpdatePreState",
-            "properties": {
-                "value": {
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GSuitePrincipal": {
             "id": "GSuitePrincipal",
             "properties": {
@@ -9617,53 +4863,6 @@
             },
             "type": "object"
         },
-        "GaiaGroupProto": {
-            "id": "GaiaGroupProto",
-            "properties": {
-                "groupId": {
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GaiaUserProto": {
-            "description": "A Gaia account, which may represent a user, device, service account, etc. For prod (@prod.google.com) accounts, use MdbUserProto instead.",
-            "id": "GaiaUserProto",
-            "properties": {
-                "userId": {
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GatewayAccess": {
-            "description": "Details on the third-party interoperability settings for the meeting space.",
-            "id": "GatewayAccess",
-            "properties": {
-                "enabled": {
-                    "description": "Whether third-party gateway accesses are enabled for this meeting space. If enabled, the actual access code can be retrieved by calling the GetGatewayAccess RPC method.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "GatewaySipAccess": {
-            "description": "Details how to join the conference via a SIP gateway.",
-            "id": "GatewaySipAccess",
-            "properties": {
-                "sipAccessCode": {
-                    "description": "Permanent numeric code for manual entry on specially configured devices, currently the same as the PSTN \"Universal pin\".",
-                    "type": "string"
-                },
-                "uri": {
-                    "description": "The SIP URI the conference can be reached through. The string is on one of the formats: \"sip:@\" \"sips:@\" where currently is the 13-digit universal pin (with the future option to support using a Meet meeting code as well), and is a valid address to be resolved using a DNS SRV lookup, or a dotted quad.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GetCustomerIndexStatsResponse": {
             "id": "GetCustomerIndexStatsResponse",
             "properties": {
@@ -9803,993 +5002,6 @@
             },
             "type": "object"
         },
-        "GmailClientActionMarkup": {
-            "id": "GmailClientActionMarkup",
-            "properties": {
-                "addonComposeUiActionMarkup": {
-                    "$ref": "AddonComposeUiActionMarkup"
-                },
-                "openCreatedDraftActionMarkup": {
-                    "$ref": "OpenCreatedDraftActionMarkup"
-                },
-                "taskAction": {
-                    "$ref": "TaskActionMarkup"
-                },
-                "updateDraftActionMarkup": {
-                    "$ref": "UpdateDraftActionMarkup"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1ContextualAddOnMarkup": {
-            "description": "The markup for developers to specify the contents of a contextual AddOn.",
-            "id": "GoogleChatV1ContextualAddOnMarkup",
-            "properties": {
-                "cards": {
-                    "description": "A list of cards. A card must contain a header and at least 1 section.",
-                    "items": {
-                        "$ref": "GoogleChatV1ContextualAddOnMarkupCard"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1ContextualAddOnMarkupCard": {
-            "description": "A card is a UI element that can contain UI widgets such as texts, images.",
-            "id": "GoogleChatV1ContextualAddOnMarkupCard",
-            "properties": {
-                "cardActions": {
-                    "description": "The actions of this card.",
-                    "items": {
-                        "$ref": "GoogleChatV1ContextualAddOnMarkupCardCardAction"
-                    },
-                    "type": "array"
-                },
-                "header": {
-                    "$ref": "GoogleChatV1ContextualAddOnMarkupCardCardHeader",
-                    "description": "The header of the card. A header usually contains a title and an image."
-                },
-                "name": {
-                    "description": "Name of the card.",
-                    "type": "string"
-                },
-                "sections": {
-                    "description": "Sections are separated by a line divider.",
-                    "items": {
-                        "$ref": "GoogleChatV1ContextualAddOnMarkupCardSection"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1ContextualAddOnMarkupCardCardAction": {
-            "description": "A card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser. Not supported by Google Chat apps.",
-            "id": "GoogleChatV1ContextualAddOnMarkupCardCardAction",
-            "properties": {
-                "actionLabel": {
-                    "description": "The label used to be displayed in the action menu item.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "GoogleChatV1WidgetMarkupOnClick",
-                    "description": "The onclick action for this action item."
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1ContextualAddOnMarkupCardCardHeader": {
-            "id": "GoogleChatV1ContextualAddOnMarkupCardCardHeader",
-            "properties": {
-                "imageStyle": {
-                    "description": "The image's type (e.g. square border or circular border).",
-                    "enum": [
-                        "IMAGE_STYLE_UNSPECIFIED",
-                        "IMAGE",
-                        "AVATAR"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Square border.",
-                        "Circular border."
-                    ],
-                    "type": "string"
-                },
-                "imageUrl": {
-                    "description": "The URL of the image in the card header.",
-                    "type": "string"
-                },
-                "subtitle": {
-                    "description": "The subtitle of the card header.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each will take up 1 line. If only the title is specified, it will take up both lines.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1ContextualAddOnMarkupCardSection": {
-            "description": "A section contains a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there is currently no need for layout properties (e.g. float).",
-            "id": "GoogleChatV1ContextualAddOnMarkupCardSection",
-            "properties": {
-                "header": {
-                    "description": "The header of the section. Formatted text is supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
-                    "type": "string"
-                },
-                "widgets": {
-                    "description": "A section must contain at least 1 widget.",
-                    "items": {
-                        "$ref": "GoogleChatV1WidgetMarkup"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkup": {
-            "description": "A widget is a UI element that presents texts, images, etc.",
-            "id": "GoogleChatV1WidgetMarkup",
-            "properties": {
-                "buttons": {
-                    "description": "A list of buttons. Buttons is also `oneof data` and only one of these fields should be set.",
-                    "items": {
-                        "$ref": "GoogleChatV1WidgetMarkupButton"
-                    },
-                    "type": "array"
-                },
-                "image": {
-                    "$ref": "GoogleChatV1WidgetMarkupImage",
-                    "description": "Display an image in this widget."
-                },
-                "keyValue": {
-                    "$ref": "GoogleChatV1WidgetMarkupKeyValue",
-                    "description": "Display a key value item in this widget."
-                },
-                "textParagraph": {
-                    "$ref": "GoogleChatV1WidgetMarkupTextParagraph",
-                    "description": "Display a text paragraph in this widget."
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupButton": {
-            "description": "A button. Can be a text button or an image button.",
-            "id": "GoogleChatV1WidgetMarkupButton",
-            "properties": {
-                "imageButton": {
-                    "$ref": "GoogleChatV1WidgetMarkupImageButton",
-                    "description": "A button with image and onclick action."
-                },
-                "textButton": {
-                    "$ref": "GoogleChatV1WidgetMarkupTextButton",
-                    "description": "A button with text and onclick action."
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupFormAction": {
-            "description": "A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form.",
-            "id": "GoogleChatV1WidgetMarkupFormAction",
-            "properties": {
-                "actionMethodName": {
-                    "description": "The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the Chat app as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.",
-                    "type": "string"
-                },
-                "parameters": {
-                    "description": "List of action parameters.",
-                    "items": {
-                        "$ref": "GoogleChatV1WidgetMarkupFormActionActionParameter"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupFormActionActionParameter": {
-            "description": "List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.",
-            "id": "GoogleChatV1WidgetMarkupFormActionActionParameter",
-            "properties": {
-                "key": {
-                    "description": "The name of the parameter for the action script.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value of the parameter.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupImage": {
-            "description": "An image that is specified by a URL and can have an onclick action.",
-            "id": "GoogleChatV1WidgetMarkupImage",
-            "properties": {
-                "aspectRatio": {
-                    "description": "The aspect ratio of this image (width/height). This field allows clients to reserve the right height for the image while waiting for it to load. It's not meant to override the native aspect ratio of the image. If unset, the server fills it by prefetching the image.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "imageUrl": {
-                    "description": "The URL of the image.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "GoogleChatV1WidgetMarkupOnClick",
-                    "description": "The onclick action."
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupImageButton": {
-            "description": "An image button with an onclick action.",
-            "id": "GoogleChatV1WidgetMarkupImageButton",
-            "properties": {
-                "icon": {
-                    "description": "The icon specified by an enum that indices to an icon provided by Chat API.",
-                    "enum": [
-                        "ICON_UNSPECIFIED",
-                        "AIRPLANE",
-                        "BOOKMARK",
-                        "BUS",
-                        "CAR",
-                        "CLOCK",
-                        "CONFIRMATION_NUMBER_ICON",
-                        "DOLLAR",
-                        "DESCRIPTION",
-                        "EMAIL",
-                        "EVENT_PERFORMER",
-                        "EVENT_SEAT",
-                        "FLIGHT_ARRIVAL",
-                        "FLIGHT_DEPARTURE",
-                        "HOTEL",
-                        "HOTEL_ROOM_TYPE",
-                        "INVITE",
-                        "MAP_PIN",
-                        "MEMBERSHIP",
-                        "MULTIPLE_PEOPLE",
-                        "OFFER",
-                        "PERSON",
-                        "PHONE",
-                        "RESTAURANT_ICON",
-                        "SHOPPING_CART",
-                        "STAR",
-                        "STORE",
-                        "TICKET",
-                        "TRAIN",
-                        "VIDEO_CAMERA",
-                        "VIDEO_PLAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "description": "The icon specified by a URL.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of this image_button which will be used for accessibility. Default value will be provided if developers don't specify.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "GoogleChatV1WidgetMarkupOnClick",
-                    "description": "The onclick action."
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupKeyValue": {
-            "description": "A UI element contains a key (label) and a value (content). And this element may also contain some actions such as onclick button.",
-            "id": "GoogleChatV1WidgetMarkupKeyValue",
-            "properties": {
-                "bottomLabel": {
-                    "description": "The text of the bottom label. Formatted text supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
-                    "type": "string"
-                },
-                "button": {
-                    "$ref": "GoogleChatV1WidgetMarkupButton",
-                    "description": "A button that can be clicked to trigger an action."
-                },
-                "content": {
-                    "description": "The text of the content. Formatted text supported and always required. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
-                    "type": "string"
-                },
-                "contentMultiline": {
-                    "description": "If the content should be multiline.",
-                    "type": "boolean"
-                },
-                "icon": {
-                    "description": "An enum value that will be replaced by the Chat API with the corresponding icon image.",
-                    "enum": [
-                        "ICON_UNSPECIFIED",
-                        "AIRPLANE",
-                        "BOOKMARK",
-                        "BUS",
-                        "CAR",
-                        "CLOCK",
-                        "CONFIRMATION_NUMBER_ICON",
-                        "DOLLAR",
-                        "DESCRIPTION",
-                        "EMAIL",
-                        "EVENT_PERFORMER",
-                        "EVENT_SEAT",
-                        "FLIGHT_ARRIVAL",
-                        "FLIGHT_DEPARTURE",
-                        "HOTEL",
-                        "HOTEL_ROOM_TYPE",
-                        "INVITE",
-                        "MAP_PIN",
-                        "MEMBERSHIP",
-                        "MULTIPLE_PEOPLE",
-                        "OFFER",
-                        "PERSON",
-                        "PHONE",
-                        "RESTAURANT_ICON",
-                        "SHOPPING_CART",
-                        "STAR",
-                        "STORE",
-                        "TICKET",
-                        "TRAIN",
-                        "VIDEO_CAMERA",
-                        "VIDEO_PLAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "description": "The icon specified by a URL.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "GoogleChatV1WidgetMarkupOnClick",
-                    "description": "The onclick action. Only the top label, bottom label and content region are clickable."
-                },
-                "topLabel": {
-                    "description": "The text of the top label. Formatted text supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupOnClick": {
-            "description": "An onclick action (e.g. open a link).",
-            "id": "GoogleChatV1WidgetMarkupOnClick",
-            "properties": {
-                "action": {
-                    "$ref": "GoogleChatV1WidgetMarkupFormAction",
-                    "description": "A form action will be triggered by this onclick if specified."
-                },
-                "openLink": {
-                    "$ref": "GoogleChatV1WidgetMarkupOpenLink",
-                    "description": "This onclick triggers an open link action if specified."
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupOpenLink": {
-            "description": "A link that opens a new window.",
-            "id": "GoogleChatV1WidgetMarkupOpenLink",
-            "properties": {
-                "url": {
-                    "description": "The URL to open.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupTextButton": {
-            "description": "A button with text and onclick action.",
-            "id": "GoogleChatV1WidgetMarkupTextButton",
-            "properties": {
-                "onClick": {
-                    "$ref": "GoogleChatV1WidgetMarkupOnClick",
-                    "description": "The onclick action of the button."
-                },
-                "text": {
-                    "description": "The text of the button.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleChatV1WidgetMarkupTextParagraph": {
-            "description": "A paragraph of text. Formatted text supported. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace Add-ons.",
-            "id": "GoogleChatV1WidgetMarkupTextParagraph",
-            "properties": {
-                "text": {
-                    "type": "string"
-                }
-            },
-            "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: 9",
-            "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"
-                },
-                "numSubscribers": {
-                    "description": "Contains number of subscribers for the document.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "numViewers": {
-                    "description": "Size of untruncated viewers list.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "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"
-        },
-        "Grid": {
-            "id": "Grid",
-            "properties": {
-                "borderStyle": {
-                    "$ref": "BorderStyle",
-                    "description": "The border style to apply to each grid item."
-                },
-                "items": {
-                    "description": "The items to display in the grid.",
-                    "items": {
-                        "$ref": "GridItem"
-                    },
-                    "type": "array"
-                },
-                "numColumns": {
-                    "description": "The number of columns to display in the grid. Note that a default value will be used if this field is not specified, and that default value will be different depending on where the grid is shown (dialog vs companion).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "onClick": {
-                    "$ref": "OnClick",
-                    "description": "This callback will be reused by each individual GridItem, but with the item's identifier and index in the items list added to the callback's parameters."
-                },
-                "title": {
-                    "description": "The text to display in the grid header.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GridItem": {
-            "id": "GridItem",
-            "properties": {
-                "identifier": {
-                    "description": "A user-specified identifier for this grid item. This identifier will be returned in the parent Grid's on_click callback's parameters.",
-                    "type": "string"
-                },
-                "image": {
-                    "$ref": "ImageComponent"
-                },
-                "layout": {
-                    "enum": [
-                        "NOT_SET",
-                        "TEXT_BELOW",
-                        "TEXT_ABOVE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The title and subtitle are shown below the grid item's image.",
-                        "The title and subtitle are shown above the grid item's image."
-                    ],
-                    "type": "string"
-                },
-                "subtitle": {
-                    "type": "string"
-                },
-                "textAlignment": {
-                    "enum": [
-                        "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
-                        "START",
-                        "CENTER",
-                        "END"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Text properties.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GroupDetailsUpdatedMetadata": {
-            "id": "GroupDetailsUpdatedMetadata",
-            "properties": {
-                "newGroupDetails": {
-                    "$ref": "AppsDynamiteSharedGroupDetails"
-                },
-                "prevGroupDetails": {
-                    "$ref": "AppsDynamiteSharedGroupDetails"
-                }
-            },
-            "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"
-        },
-        "GroupLinkSharingModificationEvent": {
-            "id": "GroupLinkSharingModificationEvent",
-            "properties": {
-                "newStatus": {
-                    "enum": [
-                        "UNKNOWN_LINK_SHARING_STATUS",
-                        "LINK_SHARING_ON",
-                        "LINK_SHARING_OFF",
-                        "NOT_AVAILABLE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Link sharing is turned on.",
-                        "Link sharing is turned off.",
-                        "Link sharing is not available for the conversation."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GroupRetentionSettingsUpdatedMetaData": {
-            "id": "GroupRetentionSettingsUpdatedMetaData",
-            "properties": {
-                "initiator": {
-                    "$ref": "UserId",
-                    "description": "The user who triggered the retention settings update"
-                },
-                "retentionSettings": {
-                    "$ref": "AppsDynamiteSharedRetentionSettings",
-                    "description": "The updated space retention settings"
-                }
-            },
-            "type": "object"
-        },
-        "GsuiteIntegrationMetadata": {
-            "description": "Annotation metadata for a GsuiteIntegration artifact.",
-            "id": "GsuiteIntegrationMetadata",
-            "properties": {
-                "activityFeedData": {
-                    "$ref": "AppsDynamiteSharedActivityFeedAnnotationData"
-                },
-                "assistantData": {
-                    "$ref": "AppsDynamiteSharedAssistantAnnotationData"
-                },
-                "calendarEventData": {
-                    "$ref": "AppsDynamiteSharedCalendarEventAnnotationData"
-                },
-                "callData": {
-                    "$ref": "AppsDynamiteSharedCallAnnotationData",
-                    "description": "Data used to render call artifacts."
-                },
-                "clientType": {
-                    "enum": [
-                        "UNKNOWN_CLIENT_TYPE",
-                        "MEET",
-                        "TASKS",
-                        "CALENDAR_EVENT",
-                        "ASSISTANT",
-                        "ACTIVITY_FEED_SERVICE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "indexableTexts": {
-                    "description": "A list of all strings that are to be indexed for this 1P chip. Each string in this list would be the contents of a single string field in the 1P chip. Eg. For Tasks[title = “hello world”, description = “good bye”]. If we want to index only the title, this would be set to [“hello world”]. If both title and description, then this would be [“hello world”, “good bye”]. Please make sure that the contents of this field is a subset of strings that are rendered as part of the 1P Chip.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "tasksData": {
-                    "$ref": "AppsDynamiteSharedTasksAnnotationData"
-                }
-            },
-            "type": "object"
-        },
-        "HangoutEvent": {
-            "id": "HangoutEvent",
-            "properties": {
-                "hangoutDurationSecs": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "mediaType": {
-                    "enum": [
-                        "AUDIO_VIDEO",
-                        "AUDIO_ONLY",
-                        "PUSH_TO_TALK"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "A user has started a PTT broadcast. When receiving a notification with this HangoutMediaType, other users in the conversation will take different actions depending on their active clients: a) If there is a recent \"reasonable\" active client, the user will join hangout and play audio. b) If there is no \"reasonable\" active client an invite will be displayed on all clients."
-                    ],
-                    "type": "string"
-                },
-                "participantId": {
-                    "items": {
-                        "$ref": "StoredParticipantId"
-                    },
-                    "type": "array"
-                },
-                "type": {
-                    "enum": [
-                        "START_HANGOUT",
-                        "JOIN_HANGOUT",
-                        "LEAVE_HANGOUT",
-                        "END_HANGOUT",
-                        "HANGOUT_COMING_SOON",
-                        "ONGOING_HANGOUT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "HangoutVideoEventMetadata": {
-            "description": "A message representing the Hangout video start/end events in Babel",
-            "id": "HangoutVideoEventMetadata",
-            "properties": {
-                "hangoutVideoType": {
-                    "enum": [
-                        "UNKNOWN_HANGOUT_VIDEO_EVENT_TYPE",
-                        "VIDEO_START",
-                        "VIDEO_END"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "HashtagData": {
-            "description": "Hashtag metadata, for HASHTAG segments. For a hashtag, the \"text\" field should contain the display text, and the search_text field should represent the topic being referenced, without the hash symbol; for example, we might have: text = \"#Google\" hashtag_data.search_text = \"Google\" Another example: text = \"#pikachu\" hashtag_data.search_text = \"Pokemon\" Both strings should be considered part of the searchable text. In go/sbe, both are indexed and searchable.",
-            "id": "HashtagData",
-            "properties": {
-                "searchText": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "History": {
-            "description": "The most recent history records associated with the item.",
-            "id": "History",
-            "properties": {
-                "record": {
-                    "items": {
-                        "$ref": "HistoryRecord"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "HistoryRecord": {
-            "id": "HistoryRecord",
-            "properties": {
-                "clientContext": {
-                    "$ref": "ClientContext",
-                    "description": "This will almost always be set, but there are corner cases in which the information is not available, and thus applications must handle its absence appropriately."
-                },
-                "filterUpdate": {
-                    "$ref": "FilterUpdate"
-                },
-                "imapUpdate": {
-                    "$ref": "ImapUpdate"
-                },
-                "labelUpdate": {
-                    "$ref": "LabelUpdate"
-                },
-                "prefUpdate": {
-                    "$ref": "PrefUpdate"
-                },
-                "recordId": {
-                    "description": "Each HistoryRecord has a unique id. Ids are monotonically increasing, and not necessarily contiguous.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "threadUpdate": {
-                    "$ref": "ThreadUpdate"
-                },
-                "transactionContext": {
-                    "$ref": "TransactionContext",
-                    "description": "This will almost always be set, but there are corner cases in which the information is not available, and thus applications must handle its absence appropriately."
-                },
-                "txnDebugInfo": {
-                    "$ref": "TransactionDebugInfo"
-                },
-                "type": {
-                    "enum": [
-                        "UNKNOWN",
-                        "INTERNAL",
-                        "MESSAGE_ADDED",
-                        "MESSAGE_DELETED",
-                        "LABEL_ADDED",
-                        "LABEL_REMOVED",
-                        "ATTRIBUTE_SET",
-                        "ATTRIBUTE_REMOVED",
-                        "THREAD_KEY_SET",
-                        "LABEL_CREATED",
-                        "LABEL_DELETED",
-                        "LABEL_RENAMED",
-                        "LABEL_UPDATED",
-                        "PREF_WRITTEN",
-                        "PREF_DELETED",
-                        "FILTER_CREATED",
-                        "FILTER_DELETED",
-                        "IMAP_UIDS_REASSIGN",
-                        "TOPIC_STATE_UPDATED",
-                        "TXN_DEBUG_INFO"
-                    ],
-                    "enumDescriptions": [
-                        "Represents a type that is deprecated or not known by the executing code. Even if Fusebox sends a HistoryRecord with Type not UNKNOWN, it may send Type values that are not yet defined on the client-side, in which case they will be appear as Type.UNKNOWN on the client.",
-                        "Represents a change internal to the Fusebox. HistoryRecords for Fusebox internal changes contribute to the user's version, which is defined as the latest HistoryRecord's record_id. INTERNAL HistoryRecords exist to allow a client to update its notion of the latest record_id it has processed, but do not necessarily contain any other information.",
-                        "ThreadUpdate:",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "LabelUpdate:",
-                        "",
-                        "",
-                        "",
-                        "PrefUpdate:",
-                        "",
-                        "FilterUpdate:",
-                        "",
-                        "IMAP",
-                        "EAI",
-                        "TXN_DEBUG_INFO"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "HostAppActionMarkup": {
-            "description": "Actions handled by individual host apps.",
-            "id": "HostAppActionMarkup",
-            "properties": {
-                "calendarAction": {
-                    "$ref": "CalendarClientActionMarkup",
-                    "description": "Actions handled by Calendar."
-                },
-                "chatAction": {
-                    "$ref": "ChatClientActionMarkup",
-                    "description": "Actions handled by Chat."
-                },
-                "driveAction": {
-                    "$ref": "DriveClientActionMarkup",
-                    "description": "Actions handled by Drive."
-                },
-                "editorAction": {
-                    "$ref": "EditorClientActionMarkup",
-                    "description": "Actions handled by Docs, Sheets, or Slides."
-                },
-                "gmailAction": {
-                    "$ref": "GmailClientActionMarkup",
-                    "description": "Actions handled by Gmail."
-                },
-                "sheetsAction": {
-                    "$ref": "SheetsClientActionMarkup",
-                    "description": "Actions handled by Sheets."
-                }
-            },
-            "type": "object"
-        },
-        "HostProto": {
-            "description": "Represents a single host. Optionally, the MDB owner of the host can be specified.",
-            "id": "HostProto",
-            "properties": {
-                "hostName": {
-                    "description": "Lower-case, fully qualified hostname.",
-                    "type": "string"
-                },
-                "hostOwner": {
-                    "description": "If present, then any checks that compare this Principal to LOAS peer info must confirm the peer's machine owner is equal to 'host_owner'. If absent, then any peer machine owner is acceptable.",
-                    "type": "string"
-                }
-            },
-            "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",
@@ -10830,807 +5042,6 @@
             },
             "type": "object"
         },
-        "IconImage": {
-            "id": "IconImage",
-            "properties": {
-                "altText": {
-                    "description": "The alternative text of this icon_url which will be used for accessibility.",
-                    "type": "string"
-                },
-                "icon": {
-                    "enum": [
-                        "NONE",
-                        "AIRPLANE",
-                        "BOOKMARK",
-                        "BUS",
-                        "CAR",
-                        "CLOCK",
-                        "CONFIRMATION_NUMBER_ICON",
-                        "DOLLAR",
-                        "DESCRIPTION",
-                        "EDIT",
-                        "EDIT_NOTE",
-                        "EMAIL",
-                        "EVENT_PERFORMER",
-                        "EVENT_SEAT",
-                        "FLIGHT_ARRIVAL",
-                        "FLIGHT_DEPARTURE",
-                        "HOTEL",
-                        "HOTEL_ROOM_TYPE",
-                        "INVITE",
-                        "MAP_PIN",
-                        "MEMBERSHIP",
-                        "MULTIPLE_PEOPLE",
-                        "OFFER",
-                        "OPEN_IN_NEW",
-                        "PERSON",
-                        "PHONE",
-                        "RESTAURANT_ICON",
-                        "SHOPPING_CART",
-                        "STAR",
-                        "STORE",
-                        "TICKET",
-                        "TRAIN",
-                        "VIDEO_CAMERA",
-                        "VIDEO_PLAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Add new items in alphabetical order. Next Available ID: 34"
-                    ],
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "type": "string"
-                },
-                "imageStyle": {
-                    "description": "The image cropping style. Note that icons with a CIRCLE style are rendered larger than the default icon size.",
-                    "enum": [
-                        "CROP_TYPE_NOT_SET",
-                        "SQUARE",
-                        "CIRCLE",
-                        "RECTANGLE_CUSTOM",
-                        "RECTANGLE_4_3"
-                    ],
-                    "enumDescriptions": [
-                        "No value specified.",
-                        "Applies a square crop.",
-                        "Applies a circular crop.",
-                        "Applies a rectangular crop with a custom aspect ratio.",
-                        "Applies a rectangular crop with a 4:3 aspect ratio."
-                    ],
-                    "type": "string"
-                }
-            },
-            "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. This field should really be called the \"bucket ID\", not the creator ID. In some circumstances, such as copying a Google Docs file, a user can create an item in a different user's bucket, so it should not be relied upon for anything other than bucket location. To look up the requesting user who initially created item, use the `creator_id` DirEntry field instead.",
-                    "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"
-        },
-        "Image": {
-            "id": "Image",
-            "properties": {
-                "altText": {
-                    "description": "The alternative text of this image which will be used for accessibility.",
-                    "type": "string"
-                },
-                "aspectRatio": {
-                    "description": "The aspect ratio of this image (width/height).",
-                    "format": "double",
-                    "type": "number"
-                },
-                "imageUrl": {
-                    "description": "Image url specified by developers. Server side, we will wrap with FIFE so client apps can configure size/cropping/etc.",
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "OnClick"
-                }
-            },
-            "type": "object"
-        },
-        "ImageButton": {
-            "id": "ImageButton",
-            "properties": {
-                "icon": {
-                    "enum": [
-                        "NONE",
-                        "AIRPLANE",
-                        "BOOKMARK",
-                        "BUS",
-                        "CAR",
-                        "CLOCK",
-                        "CONFIRMATION_NUMBER_ICON",
-                        "DOLLAR",
-                        "DESCRIPTION",
-                        "EDIT",
-                        "EDIT_NOTE",
-                        "EMAIL",
-                        "EVENT_PERFORMER",
-                        "EVENT_SEAT",
-                        "FLIGHT_ARRIVAL",
-                        "FLIGHT_DEPARTURE",
-                        "HOTEL",
-                        "HOTEL_ROOM_TYPE",
-                        "INVITE",
-                        "MAP_PIN",
-                        "MEMBERSHIP",
-                        "MULTIPLE_PEOPLE",
-                        "OFFER",
-                        "OPEN_IN_NEW",
-                        "PERSON",
-                        "PHONE",
-                        "RESTAURANT_ICON",
-                        "SHOPPING_CART",
-                        "STAR",
-                        "STORE",
-                        "TICKET",
-                        "TRAIN",
-                        "VIDEO_CAMERA",
-                        "VIDEO_PLAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Add new items in alphabetical order. Next Available ID: 34"
-                    ],
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "OnClick"
-                }
-            },
-            "type": "object"
-        },
-        "ImageComponent": {
-            "description": "NOTE: Through future refactoring work, this image component will eventually be used in the Image widget, and will likely replace the Icon proto as well.",
-            "id": "ImageComponent",
-            "properties": {
-                "altText": {
-                    "type": "string"
-                },
-                "borderStyle": {
-                    "$ref": "BorderStyle"
-                },
-                "cropStyle": {
-                    "$ref": "ImageCropStyle"
-                },
-                "imageUrl": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ImageCropStyle": {
-            "description": "Represents a crop style that can be applied to an image.",
-            "id": "ImageCropStyle",
-            "properties": {
-                "aspectRatio": {
-                    "description": "The aspect ratio to use if the crop type is RECTANGLE_CUSTOM.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "type": {
-                    "description": "The crop type.",
-                    "enum": [
-                        "CROP_TYPE_NOT_SET",
-                        "SQUARE",
-                        "CIRCLE",
-                        "RECTANGLE_CUSTOM",
-                        "RECTANGLE_4_3"
-                    ],
-                    "enumDescriptions": [
-                        "No value specified.",
-                        "Applies a square crop.",
-                        "Applies a circular crop.",
-                        "Applies a rectangular crop with a custom aspect ratio.",
-                        "Applies a rectangular crop with a 4:3 aspect ratio."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ImageKeyValue": {
-            "description": "This is deprecated and please use KeyValue.",
-            "id": "ImageKeyValue",
-            "properties": {
-                "icon": {
-                    "enum": [
-                        "NONE",
-                        "AIRPLANE",
-                        "BOOKMARK",
-                        "BUS",
-                        "CAR",
-                        "CLOCK",
-                        "CONFIRMATION_NUMBER_ICON",
-                        "DOLLAR",
-                        "DESCRIPTION",
-                        "EDIT",
-                        "EDIT_NOTE",
-                        "EMAIL",
-                        "EVENT_PERFORMER",
-                        "EVENT_SEAT",
-                        "FLIGHT_ARRIVAL",
-                        "FLIGHT_DEPARTURE",
-                        "HOTEL",
-                        "HOTEL_ROOM_TYPE",
-                        "INVITE",
-                        "MAP_PIN",
-                        "MEMBERSHIP",
-                        "MULTIPLE_PEOPLE",
-                        "OFFER",
-                        "OPEN_IN_NEW",
-                        "PERSON",
-                        "PHONE",
-                        "RESTAURANT_ICON",
-                        "SHOPPING_CART",
-                        "STAR",
-                        "STORE",
-                        "TICKET",
-                        "TRAIN",
-                        "VIDEO_CAMERA",
-                        "VIDEO_PLAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Add new items in alphabetical order. Next Available ID: 34"
-                    ],
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "OnClick"
-                },
-                "text": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ImapSessionContext": {
-            "id": "ImapSessionContext",
-            "properties": {
-                "app": {
-                    "enum": [
-                        "OTHER_APP",
-                        "CHROME",
-                        "FIREFOX",
-                        "MSIE",
-                        "SAFARI",
-                        "OPERA",
-                        "EDGE",
-                        "MSIE_COMPATIBILITY",
-                        "OTHER_BROWSER",
-                        "SAMSUNG_BROWSER",
-                        "UC_BROWSER",
-                        "ANDROID_BROWSER",
-                        "YANDEX_BROWSER",
-                        "SILK_BROWSER",
-                        "COC_COC_BROWSER",
-                        "HEADLESS_CHROME",
-                        "MAX_BROWSER_APP_VALUE",
-                        "GMAIL_APP",
-                        "GMAIL_INBOX_APP",
-                        "ANDROID_EMAIL_APP",
-                        "SAMSUNG_MAIL_APP",
-                        "MOTO_EMAIL_APP",
-                        "BOXER_APP",
-                        "LIMILABS_MAIL_DLL",
-                        "BIS_APP",
-                        "OUTLOOK_MAIL_APP",
-                        "APPLE_NATIVE_APP",
-                        "CHROME_WEBVIEW_APP",
-                        "SAFARI_WEBVIEW_APP",
-                        "CHROME_SYNC_APP",
-                        "GSA_APP",
-                        "GMM_APP",
-                        "CALENDAR_APP",
-                        "PLUS_APP",
-                        "HANGOUTS_APP",
-                        "HANGOUTS_MEET_APP",
-                        "JAMBOARD_APP",
-                        "VOICE_APP",
-                        "PHOTOS_APP",
-                        "DRIVE_SYNC_APP",
-                        "DRIVE_APP",
-                        "DOCS_APP",
-                        "SHEETS_APP",
-                        "SLIDES_APP",
-                        "KEEP_APP",
-                        "WHATS_APP_IN_DRIVE_APP",
-                        "TRANSLATE_APP",
-                        "YOUTUBE_APP",
-                        "YOUTUBE_MUSIC_APP",
-                        "YOUTUBE_GAMING_APP",
-                        "YOUTUBE_KIDS_APP",
-                        "YOUTUBE_CAPTURE_APP",
-                        "YOUTUBE_CREATOR_APP",
-                        "YOUTUBE_GO_APP",
-                        "YOUTUBE_TV_APP",
-                        "YOUTUBE_VR_APP",
-                        "PLAY_APP",
-                        "PLAY_MUSIC_APP",
-                        "PLAY_BOOKS_APP",
-                        "PLAY_MOVIES_APP",
-                        "PLAY_NEWSSTAND_APP",
-                        "PLAY_GAMES_APP",
-                        "POKEMON_GO_APP",
-                        "ALLO_APP",
-                        "DUO_APP",
-                        "CLASSROOM_APP",
-                        "TRIPS_APP",
-                        "GOOGLE_PAY_APP",
-                        "WAZE_APP",
-                        "ASSISTANT_APP",
-                        "GBOARD_APP",
-                        "NEWS_APP",
-                        "HOME_APP",
-                        "EARTH_APP",
-                        "STREET_VIEW_APP",
-                        "TEZ_APP",
-                        "GOOGLE_ANALYTICS_APP",
-                        "ADSENSE_APP",
-                        "ADWORDS_APP",
-                        "EXPRESS_APP",
-                        "WEAR_APP",
-                        "GOOGLE_MY_BUSINESS_APP",
-                        "FAMILY_LINK_APP",
-                        "OPINION_REWARDS_APP",
-                        "WALLET_APP",
-                        "ARTS_AND_CULTURE_APP",
-                        "ANDROID_DEVICE_MANAGER_APP",
-                        "GOOGLE_GO_APP",
-                        "FILES_GO_APP",
-                        "DATALLY_APP",
-                        "WIFI_APP",
-                        "STADIA_APP",
-                        "BATTLESTAR_APP",
-                        "SMART_LOCK_APP",
-                        "LOGDOG_APP",
-                        "DEPRECATED_MAC_OSX_MAIL_APP",
-                        "DEPRECATED_IOS_MAIL_APP"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown",
-                        "Browsers Google Chrome",
-                        "Mozilla Firefox",
-                        "Microsoft Internet Explorer",
-                        "Apple Safari",
-                        "Opera",
-                        "Tag #7 used to be CHROME_WEBVIEW, which was deprecated and replaced by CHROME_WEBVIEW_APP. When adding a new browser, skip #7 for safety. Microsoft Edge",
-                        "MSIE in Compatibility View. See b/22467241.",
-                        "Browser not otherwise specified",
-                        "Samsung browser on Android",
-                        "UC Browser",
-                        "Android's legacy default AOSP browser (distinct",
-                        "from customized OEM flavours). Yandex Browser",
-                        "Amazon Silk browser",
-                        "Popoular browser in Vietnam",
-                        "Headless version of Chrome",
-                        "Tag for the maximum enum value that represents a browser. Enum values (strictly) between OTHER_APP and this value represent browsers. This should never appear in real data.",
-                        "Email apps Gmail",
-                        "Inbox by Gmail",
-                        "Native Android email app",
-                        "(replaced by Gmail in Lollipop) Samsung mail",
-                        "Motorola email app",
-                        "Boxer",
-                        "Mail.dll by Limilabs",
-                        "BlackBerry Internet Service",
-                        "Microsoft Outlook",
-                        "Apple apps (mail, contacts & calendar)",
-                        "Chrome Webview",
-                        "Safari Webview",
-                        "Chrome Sync",
-                        "Includes both Now and Search on GSA.",
-                        "Maps",
-                        "Calendar",
-                        "Google+",
-                        "Hangouts Classic",
-                        "Hangouts Meet",
-                        "Jamboard app (go/jamboard)",
-                        "Google Voice",
-                        "Photos",
-                        "Drive Sync",
-                        "Drive",
-                        "Docs",
-                        "Sheets",
-                        "Slides",
-                        "Keep",
-                        "WhatsApp in Drive",
-                        "Translate",
-                        "YouTube",
-                        "YouTube Music",
-                        "YouTube Gaming",
-                        "YouTube Kids",
-                        "YouTube Capture",
-                        "YouTube Creator Studio",
-                        "YouTube Go",
-                        "YouTube TV",
-                        "YouTube VR",
-                        "Google Play",
-                        "Google Play Music",
-                        "Google Play Books",
-                        "Google Play Movies & TV",
-                        "Google Play Newsstand",
-                        "Google Play Games",
-                        "Pokemon GO (uses Google to sign in)",
-                        "Allo",
-                        "Duo",
-                        "Google Classroom",
-                        "Google Trips",
-                        "Google Pay (formerly Android Pay)",
-                        "Waze",
-                        "Google Assistant standalone app. iOS only,",
-                        "since on Android OPA is integrated in GSA. Gboard - the Google Keyboard",
-                        "Google News & Weather",
-                        "Google Home app (rebranded from Chromecast app)",
-                        "Google Earth",
-                        "Google Street View",
-                        "Tez payment app for India (go/paisa)",
-                        "Google Analytics",
-                        "AdSense",
-                        "AdWords",
-                        "Google Express (formerly Shopping Express)",
-                        "Android Wear companion app",
-                        "Google My Business",
-                        "Google Family Link",
-                        "Google Opinion Rewards",
-                        "Google Wallet",
-                        "Google Arts & Culture",
-                        "Android Device Manager",
-                        "Google Go",
-                        "Files Go",
-                        "Datally",
-                        "Google Wifi (incl. OnHub)",
-                        "Stadia (go/stadia)",
-                        "Battlestar (go/battlestar)",
-                        "SmartLock",
-                        "Non-browser, non-mail, non-first-party apps LogDog (https://getlogdog.com/)",
-                        "Do not remove this fields - remvoing them caused issues in the past (see cl/180425348 for reference).",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "deviceType": {
-                    "description": "User agent information",
-                    "enum": [
-                        "UNKNOWN",
-                        "PC",
-                        "MOBILE",
-                        "TABLET",
-                        "PORTABLE_MEDIA_PLAYER",
-                        "TV",
-                        "GAME_CONSOLE",
-                        "MEDIA_PLAYER",
-                        "SMART_SPEAKER",
-                        "SMART_DISPLAY",
-                        "CONNECTED_HOME_OTHER",
-                        "WEARABLE",
-                        "GLASS",
-                        "CAR",
-                        "VR_HEADSET"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown device type.",
-                        "PCs (incl. Macs). Desktops, laptops and various niche form factors that typically run desktop-class OSes (all-in-ones, HTPCs etc.).",
-                        "Primarily used for phones, but also set as default for OSes that are predominantly for phones (Android, iOS etc.) when we can't determine otherwise.",
-                        "Tablets.",
-                        "Mobile devices which are not phones, but are capable of storing and playing digital media such as audio, images, and video files. Example: iPod.",
-                        "Smart TVs which interact with Google products without an external additional device. Includes TV sets which run Android TV directly. Refers to actual TV screens, rather than connected boxes or dongles.",
-                        "Devices whose primary purpose is playing games. Examples: Xbox, Playstation.",
-                        "Add-on devices (i.e. devices which require connecting to another device, such as screens/TVs/speakers) whose primary purpose is media consumption (excludes physical TV screens). Examples: Chromecast, Roku, Apple TV, Nexus Player.",
-                        "Examples: Google Home, Amazon Echo.",
-                        "Examples: Google Home Display (Quartz/Manhattan/Jasper/Dragonglass), Amazon Echo Spot, Amazon Echo Show.",
-                        "Other connected home devices which do not fit in any of the above categories; that is, neither media- or gaming-focused, nor primarily a voice-enabled speaker.",
-                        "Wearable devices such as smartwatches.",
-                        "Google Glass.",
-                        "Examples: Android Auto (Embedded mode, not mirrored from phone).",
-                        "Standalone VR headsets, such as the Lenovo Mirage Solo. Does not include phone-based VR (such as Daydream View or Gear VR) or PC/Console-based such as Oculus Rift, HTC Vive and PSVR; in such cases, the form factor may be PHONE, PC or GAME_CONSOLE as applicable."
-                    ],
-                    "type": "string"
-                },
-                "guidFingerprint": {
-                    "description": "As agreed with Bond team, this holds the fingerprint of any \"aguid\" or \"guid\" provided by the ID command. The fingerprint should be calculated by fingerprint2011. Note that not all clients will provide aguid or guid through ID command.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "os": {
-                    "enum": [
-                        "UNKNOWN_OS",
-                        "ANDROID_OS",
-                        "IOS_OS",
-                        "BLACKBERRY_OS",
-                        "WIN_PHONE_OS",
-                        "FIRE_OS",
-                        "MAX_MOBILE_OS_VALUE",
-                        "WINDOWS_OS",
-                        "LINUX_OS",
-                        "MAC_OS",
-                        "CHROME_OS",
-                        "PLAYSTATION_OS",
-                        "XBOX_OS",
-                        "TIZEN_OS",
-                        "APPLE_TV_OS",
-                        "KAI_OS",
-                        "ANDROID_THINGS_OS",
-                        "CAST_OS",
-                        "STADIA_OS"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Mobile operating systems (1-99).",
-                        "",
-                        "",
-                        "",
-                        "Amazon Fire OS (for Kindle Fire devices or Fire TV).",
-                        "Tag for the maximum enum value that represents a mobile OS. Enum values (strictly) between UNKNOWN_OS and this value represent mobile OSes. This should never appear in real data.",
-                        "PC operating systems.",
-                        "",
-                        "",
-                        "",
-                        "The OS powering Playstation consoles. Ignores OS changes across console generations.",
-                        "The Windows-derived OS used on Xbox consoles.",
-                        "Tizen OS, popular in Samsung TVs, watches and more.",
-                        "Apple tvOS (powering the Apple TV).",
-                        "KaiOS, a fork from Firefox OS that is between a full smartphone and a feature phone. Notably, it supports the Google Assistant. go/kaiosama",
-                        "Android optimized for IoT devices. go/things",
-                        "Cast family devices, including Chromecast, Google Home, and third-party speaker with integrated Assistant.",
-                        "Stadia on Cast devices. This is not truly an OS, but it's a temporary setting since Stadia uses a different sign-in flow (and is revoked differently) from Cast. See http://go/stadia-in-google-account. Do not use without discussing with id-devices-eng@."
-                    ],
-                    "type": "string"
-                },
-                "osVersion": {
-                    "$ref": "OsVersion"
-                },
-                "possiblyTrimmedModel": {
-                    "$ref": "PossiblyTrimmedModel"
-                }
-            },
-            "type": "object"
-        },
-        "ImapSyncDelete": {
-            "description": "Message delete history record extension that exports //imapsync/folder attribute of deleted messages which have ^is label.",
-            "id": "ImapSyncDelete",
-            "properties": {
-                "mappings": {
-                    "$ref": "FolderAttribute",
-                    "description": "Contains the value of //imapsync/folder attribute of deleted message."
-                },
-                "msgId": {
-                    "format": "uint64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ImapUidsReassign": {
-            "id": "ImapUidsReassign",
-            "properties": {
-                "labelId": {
-                    "description": "Label",
-                    "type": "string"
-                },
-                "messageId": {
-                    "description": "The message Ids",
-                    "items": {
-                        "format": "uint64",
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ImapUpdate": {
-            "description": "HistoryRecord for changes associated with IMAP, namely: IMAP_UIDS_REASSIGN",
-            "id": "ImapUpdate",
-            "properties": {
-                "imapUidsReassign": {
-                    "$ref": "ImapUidsReassign"
-                }
-            },
-            "type": "object"
-        },
-        "ImapsyncFolderAttributeFolderMessage": {
-            "id": "ImapsyncFolderAttributeFolderMessage",
-            "properties": {
-                "flags": {
-                    "$ref": "ImapsyncFolderAttributeFolderMessageFlags",
-                    "description": "Flags of the message. Represents unseen and flagged state."
-                },
-                "uid": {
-                    "description": "UID of the message.",
-                    "format": "uint64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ImapsyncFolderAttributeFolderMessageFlags": {
-            "id": "ImapsyncFolderAttributeFolderMessageFlags",
-            "properties": {
-                "flagged": {
-                    "description": "Flagged state of the message.",
-                    "type": "boolean"
-                },
-                "seen": {
-                    "description": "Seen state of the message.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "IncomingWebhookChangedMetadata": {
-            "description": "Annotation metadata to display system messages for incoming webhook events. Next Tag: 7",
-            "id": "IncomingWebhookChangedMetadata",
-            "properties": {
-                "incomingWebhookName": {
-                    "description": "The webhook name at the time of the change. Used in Spanner storage, BE API responses and FE API responses.",
-                    "type": "string"
-                },
-                "initiatorId": {
-                    "$ref": "UserId",
-                    "description": "The user id of the user whose action triggered this system message. Used in Spanner storage, BE API responses and FE API responses."
-                },
-                "initiatorProfile": {
-                    "$ref": "User",
-                    "description": "Complete profile when ListTopicsRequest FetchOptions.USER is set. Otherwise, only the id will be filled in. Used in FE API responses."
-                },
-                "obfuscatedIncomingWebhookId": {
-                    "description": "The webhook id of the incoming webhook in question. This field should not be used to load webhook information dynamically and is only present for debugging purposes. Used in Spanner storage, BE API responses and FE API responses.",
-                    "type": "string"
-                },
-                "oldIncomingWebhookName": {
-                    "description": "Only populated for UPDATED_NAME and UPDATED_NAME_AND_AVATAR events, where the webhook name was changed. Used in Spanner storage, BE API responses and FE API responses.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Used in Spanner storage, BE API responses and FE API responses.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "ADDED",
-                        "UPDATED",
-                        "REMOVED",
-                        "UPDATED_NAME",
-                        "UPDATED_AVATAR",
-                        "UPDATED_NAME_AND_AVATAR"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "TODO (b/154857280): remove UPDATED field.",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "IndexItemOptions": {
             "id": "IndexItemOptions",
             "properties": {
@@ -11682,45 +5093,6 @@
             "properties": {},
             "type": "object"
         },
-        "InsertContent": {
-            "id": "InsertContent",
-            "properties": {
-                "content": {
-                    "description": "The content to be inserted.",
-                    "type": "string"
-                },
-                "contentType": {
-                    "description": "The type of inserted content.",
-                    "enum": [
-                        "UNSPECIFIED_CONTENT_TYPE",
-                        "TEXT",
-                        "MUTABLE_HTML",
-                        "IMMUTABLE_HTML"
-                    ],
-                    "enumDescriptions": [
-                        "Default value when nothing is set for ContentType.",
-                        "Specifies that the content is in plain text.",
-                        "Specifies that the content is in HTML and is mutable (can be edited).",
-                        "Specifies that the content is in HTML and is immutable (cannot be edited)."
-                    ],
-                    "type": "string"
-                },
-                "mimeType": {
-                    "enum": [
-                        "UNSPECIFIED_EMAIL_MIME_TYPE",
-                        "PLAIN_TEXT",
-                        "HTML"
-                    ],
-                    "enumDescriptions": [
-                        "Default value when nothing is set for EmailMimeType.",
-                        "Specifies that the inserted content is in plain text.",
-                        "Specifies that the inserted content is in HTML."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "IntegerFacetingOptions": {
             "description": "Used to specify integer faceting options.",
             "id": "IntegerFacetingOptions",
@@ -11808,46 +5180,6 @@
             },
             "type": "object"
         },
-        "IntegrationConfigMutation": {
-            "id": "IntegrationConfigMutation",
-            "properties": {
-                "addApp": {
-                    "$ref": "AppId",
-                    "description": "Add an app using its identifier."
-                },
-                "addPinnedItem": {
-                    "$ref": "PinnedItemId",
-                    "description": "Add a pinned tab using its identifier."
-                },
-                "removeApp": {
-                    "$ref": "AppId",
-                    "description": "Remove an active app using its identifier."
-                },
-                "removePinnedItem": {
-                    "$ref": "PinnedItemId",
-                    "description": "Remove an active pinned tab using its identifier."
-                }
-            },
-            "type": "object"
-        },
-        "IntegrationConfigUpdatedMetadata": {
-            "description": "Annotation metadata to display system message for integration config updated event. This metadata is stored in spanner, and can be dispatched to clients without any field modification or transformation.",
-            "id": "IntegrationConfigUpdatedMetadata",
-            "properties": {
-                "initiatorId": {
-                    "$ref": "UserId",
-                    "description": "The user whose action triggered this system message."
-                },
-                "mutations": {
-                    "description": "A list of updates applied on the integration config.",
-                    "items": {
-                        "$ref": "IntegrationConfigMutation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Interaction": {
             "description": "Represents an interaction between a user and an item.",
             "id": "Interaction",
@@ -11877,44 +5209,6 @@
             },
             "type": "object"
         },
-        "InteractionData": {
-            "description": "Interaction data for an annotation, which may be supplemental to the metadata oneof. For example, this will contain the fully built navigation target for smart chips. NEXT TAG: 2",
-            "id": "InteractionData",
-            "properties": {
-                "url": {
-                    "$ref": "SafeUrlProto",
-                    "description": "A general navigation target associated with the annotation this message is contained in. For smart chips, this will be the destination of the tap/click target and will be returned by the server. For scenarios where the chip originated from a user-provided url, this value will be provided by clients; otherwise it will be built by the corresponding metadata parts."
-                }
-            },
-            "type": "object"
-        },
-        "InviteAcceptedEvent": {
-            "id": "InviteAcceptedEvent",
-            "properties": {
-                "participantId": {
-                    "items": {
-                        "$ref": "StoredParticipantId"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "InviteeInfo": {
-            "description": "Invitee information from a Dynamite invitation. See go/dynamite-invitee-mgmt.",
-            "id": "InviteeInfo",
-            "properties": {
-                "email": {
-                    "description": "Email as typed by the user when invited to Room or DM. This value will be canonicalized and hashed before retained in storage.",
-                    "type": "string"
-                },
-                "userId": {
-                    "$ref": "UserId",
-                    "description": "Unique, immutable ID of the User."
-                }
-            },
-            "type": "object"
-        },
         "Item": {
             "description": "Represents a single object that is an item in the search index, such as a file, folder, or a database record.",
             "id": "Item",
@@ -12163,12 +5457,6 @@
             },
             "type": "object"
         },
-        "ItemParts": {
-            "description": "Container for type-specific extensions of an Item. This protobuf is defined in a separate file to allow types to reference/extend the message without depending on other fusebox protobufs. See items.proto.",
-            "id": "ItemParts",
-            "properties": {},
-            "type": "object"
-        },
         "ItemStatus": {
             "description": "This contains item's status and any errors.",
             "id": "ItemStatus",
@@ -12223,423 +5511,6 @@
             },
             "type": "object"
         },
-        "ItemThread": {
-            "description": "An ItemThread is an ordered list of Items. An ItemThread corresponds to a \"conversation\" in the context of mail. An Item belongs to exactly one ItemThread.",
-            "id": "ItemThread",
-            "properties": {
-                "clusterInfo": {
-                    "$ref": "ClusterInfo"
-                },
-                "item": {
-                    "description": "The Items in the ItemThread. In the context of a search, the list of Items may be a subset of those that logically belong to the ItemThread. The details of which items are included are available in the ItemThreadView returned in the overall rpc response.",
-                    "items": {
-                        "$ref": "FuseboxItem"
-                    },
-                    "type": "array"
-                },
-                "lastItemId": {
-                    "description": "The server id of the last item returned in the ItemThread. This can be deduced from the [item] list but is provided for convenience. When manually constructing an ItemThreadViewSpec to perform operations on the ItemThread, this value can be used as the [high_item_id_watermark].",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "matchInfo": {
-                    "$ref": "FuseboxItemThreadMatchInfo"
-                },
-                "snippet": {
-                    "description": "A snippet summarizing the thread. This field is only populated for searches.",
-                    "type": "string"
-                },
-                "threadKey": {
-                    "$ref": "MultiKey",
-                    "description": "The MultiKey that identifies this thread. This value never changes, i.e. remains constant across modifications to the thread, including addition, relabeling, or deletion of contained Items. As such, the thread key may not necessarily correspond to the key of an contained Item. Legacy note: The \"server_id\" of the thread key is equivalent to the notion of the \"original thread id\" in the CSS API."
-                },
-                "threadLocator": {
-                    "description": "A base64 encoded and encrypted string generated from the Gaia Id and the thread id. Used to generate the permalink for this thread, exposed from Gmail API.",
-                    "type": "string"
-                },
-                "topicState": {
-                    "$ref": "TopicState",
-                    "description": "Next available id : 10"
-                },
-                "version": {
-                    "description": "The latest history operation id that resulted in a mutation of any item in the thread.",
-                    "format": "uint64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "JobsettedServerSpec": {
-            "description": "Identifies a jobsetted server as a target for Trigger dispatch.",
-            "id": "JobsettedServerSpec",
-            "properties": {
-                "portName": {
-                    "description": "E.g. \"gateway\", \"stubby\" etc. Leave unset to use the default unnamed port.",
-                    "type": "string"
-                },
-                "serverName": {
-                    "description": "E.g. \"satellite-server\", \"bigtop-sync\", etc.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "KeyValue": {
-            "id": "KeyValue",
-            "properties": {
-                "bottomLabel": {
-                    "description": "Formatted text supported.",
-                    "type": "string"
-                },
-                "button": {
-                    "$ref": "Button"
-                },
-                "content": {
-                    "description": "Formatted text supported and always required.",
-                    "type": "string"
-                },
-                "contentMultiline": {
-                    "type": "boolean"
-                },
-                "endIcon": {
-                    "$ref": "IconImage"
-                },
-                "icon": {
-                    "enum": [
-                        "NONE",
-                        "AIRPLANE",
-                        "BOOKMARK",
-                        "BUS",
-                        "CAR",
-                        "CLOCK",
-                        "CONFIRMATION_NUMBER_ICON",
-                        "DOLLAR",
-                        "DESCRIPTION",
-                        "EDIT",
-                        "EDIT_NOTE",
-                        "EMAIL",
-                        "EVENT_PERFORMER",
-                        "EVENT_SEAT",
-                        "FLIGHT_ARRIVAL",
-                        "FLIGHT_DEPARTURE",
-                        "HOTEL",
-                        "HOTEL_ROOM_TYPE",
-                        "INVITE",
-                        "MAP_PIN",
-                        "MEMBERSHIP",
-                        "MULTIPLE_PEOPLE",
-                        "OFFER",
-                        "OPEN_IN_NEW",
-                        "PERSON",
-                        "PHONE",
-                        "RESTAURANT_ICON",
-                        "SHOPPING_CART",
-                        "STAR",
-                        "STORE",
-                        "TICKET",
-                        "TRAIN",
-                        "VIDEO_CAMERA",
-                        "VIDEO_PLAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "Add new items in alphabetical order. Next Available ID: 34"
-                    ],
-                    "type": "string"
-                },
-                "iconAltText": {
-                    "description": "The alternative text of this icon_url which will be used for accessibility.",
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "type": "string"
-                },
-                "imageStyle": {
-                    "enum": [
-                        "CROP_TYPE_NOT_SET",
-                        "SQUARE",
-                        "CIRCLE",
-                        "RECTANGLE_CUSTOM",
-                        "RECTANGLE_4_3"
-                    ],
-                    "enumDescriptions": [
-                        "No value specified.",
-                        "Applies a square crop.",
-                        "Applies a circular crop.",
-                        "Applies a rectangular crop with a custom aspect ratio.",
-                        "Applies a rectangular crop with a 4:3 aspect ratio."
-                    ],
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "OnClick",
-                    "description": "Only the top/bottom label + content region is clickable."
-                },
-                "startIcon": {
-                    "$ref": "IconImage",
-                    "description": "The optional icon to display before the text content."
-                },
-                "switchWidget": {
-                    "$ref": "SwitchWidget"
-                },
-                "topLabel": {
-                    "description": "Formatted text supported.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LabelAdded": {
-            "description": "A label was added to some (subset of the) messages in this thread.",
-            "id": "LabelAdded",
-            "properties": {
-                "labelId": {
-                    "type": "string"
-                },
-                "labelName": {
-                    "type": "string"
-                },
-                "messageKeys": {
-                    "items": {
-                        "$ref": "MultiKey"
-                    },
-                    "type": "array"
-                },
-                "syncId": {
-                    "format": "uint32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "LabelCreated": {
-            "description": "A label was created.",
-            "id": "LabelCreated",
-            "properties": {},
-            "type": "object"
-        },
-        "LabelDeleted": {
-            "description": "A label was deleted.",
-            "id": "LabelDeleted",
-            "properties": {},
-            "type": "object"
-        },
-        "LabelRemoved": {
-            "description": "A label was removed from some (subset of the) messages in this thread.",
-            "id": "LabelRemoved",
-            "properties": {
-                "labelId": {
-                    "type": "string"
-                },
-                "labelName": {
-                    "type": "string"
-                },
-                "messageKeys": {
-                    "items": {
-                        "$ref": "MultiKey"
-                    },
-                    "type": "array"
-                },
-                "syncId": {
-                    "format": "uint32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "LabelRenamed": {
-            "description": "A label was renamed.",
-            "id": "LabelRenamed",
-            "properties": {
-                "oldCanonicalName": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LabelUpdate": {
-            "description": "HistoryRecord for changes associated with a label, namely: LABEL_CREATED LABEL_DELETED LABEL_RENAMED LABEL_UPDATED",
-            "id": "LabelUpdate",
-            "properties": {
-                "canonicalName": {
-                    "type": "string"
-                },
-                "labelCreated": {
-                    "$ref": "LabelCreated"
-                },
-                "labelDeleted": {
-                    "$ref": "LabelDeleted"
-                },
-                "labelId": {
-                    "type": "string"
-                },
-                "labelRenamed": {
-                    "$ref": "LabelRenamed"
-                },
-                "labelUpdated": {
-                    "$ref": "LabelUpdated"
-                },
-                "syncId": {
-                    "format": "uint32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "LabelUpdated": {
-            "description": "A label pref was updated outside of a rename, create, or delete.",
-            "id": "LabelUpdated",
-            "properties": {},
-            "type": "object"
-        },
-        "Labels": {
-            "id": "Labels",
-            "properties": {
-                "displayName": {
-                    "description": "The display name of the labels. This is populated (instead of the id) when the request fetch_spec has LABEL_DISPLAY_NAMES.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "The ids of the labels attached to the Item, e.g. \"^i\", \"^x_1\"",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LanguageConfig": {
-            "description": "The language configuration for the session.",
-            "id": "LanguageConfig",
-            "properties": {
-                "spokenLanguages": {
-                    "description": "The spoken language(s) in BCP47 language code.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LdapGroupProto": {
-            "id": "LdapGroupProto",
-            "properties": {
-                "groupName": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LdapUserProto": {
-            "id": "LdapUserProto",
-            "properties": {
-                "userName": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LegacyUploadMetadata": {
-            "description": "The original UploadMetadata that this DriveMetadata was converted from.",
-            "id": "LegacyUploadMetadata",
-            "properties": {
-                "legacyUniqueId": {
-                    "description": "A unique ID generated from legacy UploadMetadata. This is used for interopping URLs after uploading blob to shared drive. Links in Classic might break without this. go/drive-file-attachment-interop-from-dynamite.",
-                    "type": "string"
-                },
-                "uploadMetadata": {
-                    "$ref": "UploadMetadata",
-                    "description": "The blob in this UploadMetadata has been uploaded to shared drive. This UploadMetadata is no longer attached to a message. go/shared-drive-data-migration."
-                }
-            },
-            "type": "object"
-        },
-        "LinkData": {
-            "description": "Link metadata, for LINK segments. Anchor text should be stored in the \"text\" field of the Segment, which can also serve as a fallback.",
-            "id": "LinkData",
-            "properties": {
-                "attachment": {
-                    "$ref": "SocialCommonAttachmentAttachment",
-                    "description": "An Attachment represents the structured entity to which we are linking. It contains an Embed (apps/tacotown/proto/embeds/embed_client.proto) with fields specific to the appropriate type of linked entity. For example, if we are linking to a photo album, the Embed may include the album ID and gaia ID of the creator. Clients that understand the Embed type within the Attachment may construct and/or decorate their link appropriately e.g. to make use of type-specific functionality or first-party integrations. The link_target and (if appropriate) display_url fields must still be set even when an Attachment is present, so that clients who do not know how to interpret the Attachment can fall back to those fields, and render the Segment as an ordinary web link. N.B. Even when an Attachment is present, the intention of a \"LINK\" Segment is for the Segment to be presented inline with the rest of the text of a post or comment, with a clickable link or other UI suitable for inlining (though the client may modify the UI based on Attachment data, e.g. to add appropriate hovers, icons, etc.). When an entity is intended to be rendered separately from the main body of the post/comment, a separate Attachment proto can be added outside the set of Segments. N.B. Within the Attachment, fields of EmbedClientItem have their own visibility annotations, which should be enforced separately from Segment visibility annotations. See: apps/tacotown/proto/embeds/embed_annotations.proto"
-                },
-                "attachmentRenderHint": {
-                    "description": "The hint to use when rendering the associated attachment. Ignored if there is no associated attachment.",
-                    "enum": [
-                        "ATTACHMENT_RENDER_HINT_UNKNOWN",
-                        "ATTACHMENT_RENDER_HINT_AFTER",
-                        "ATTACHMENT_RENDER_HINT_INTERLEAVED"
-                    ],
-                    "enumDescriptions": [
-                        "No rendering hint; should not be used (equivalent to having no hint)",
-                        "Render any associated attachment at the end of the block, after all sibling Segments. Leave the link in place in the text and render it normally as well.",
-                        "Render any associated attachment inline in the text in place of the link text, forcing a line break before and after the attachment so the text and the attachment are \"interleaved\". If this is not possible, render as if AFTER."
-                    ],
-                    "type": "string"
-                },
-                "displayUrl": {
-                    "description": "If we wish to show the user a different (e.g. shortened) version of the URL for display purposes, then that version should be set here. If this field isn't set, link_target will be used for both purposes.",
-                    "type": "string"
-                },
-                "linkTarget": {
-                    "description": "link_target is the URL to navigate to when clicked. This could be the original URL, or a URL signed by the GWS URL signing service.",
-                    "type": "string"
-                },
-                "linkType": {
-                    "description": "LinkType is an optional field that provides additional information regarding link target. For example, link type can be identified as the SELF_LINK when the request was executed from the same link as the link target.",
-                    "enum": [
-                        "UNKNOWN_LINK_TYPE",
-                        "SELF_LINK"
-                    ],
-                    "enumDescriptions": [
-                        "No link type specified.",
-                        "This indicates that the link target points to the same object related to this segment. Example: A YouTube link with text=\"0.07\" and link_target: \"https://www.youtube.com/watch?v=leHVmSqd4_w&t=0m07s\" points to the same YouTube video where this segment appears. See http://go/ignore-badwords-filtering-for-selflink for adding link_type design document."
-                    ],
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Title is an optional field that provides a short string that describes the link or its destination. User interfaces often use title as a tooltip or for accessibility purposes. However, they are of course free to present this data in any form. This field is plain text.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ListDataSourceResponse": {
             "id": "ListDataSourceResponse",
             "properties": {
@@ -12754,15 +5625,56 @@
             },
             "type": "object"
         },
-        "MatchInfo": {
-            "id": "MatchInfo",
+        "MapInfo": {
+            "description": "Geo information used for rendering a map that shows the user's work location.",
+            "id": "MapInfo",
             "properties": {
-                "matchingImageReferenceKey": {
-                    "description": "Reference keys for image attachments that matches search query.",
+                "lat": {
+                    "description": "Latitude in degrees",
+                    "format": "double",
+                    "type": "number"
+                },
+                "locationUrl": {
+                    "$ref": "SafeUrlProto",
+                    "description": "URL to a view of a map centered on the user's work location in Campus Maps (for google.com) or Google Maps (external)."
+                },
+                "long": {
+                    "description": "Longitude in degrees",
+                    "format": "double",
+                    "type": "number"
+                },
+                "mapTile": {
+                    "description": "MapTiles for the area around a user's work location",
                     "items": {
-                        "type": "string"
+                        "$ref": "MapTile"
                     },
                     "type": "array"
+                },
+                "zoom": {
+                    "description": "The zoom level of the map. A constant zoom value of 18 is used for now to match the zoom of the map shown on a Moma Teams Profile page",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "MapTile": {
+            "description": "Information used to render a map tile image in the proper location on a map.",
+            "id": "MapTile",
+            "properties": {
+                "imageUrl": {
+                    "$ref": "SafeUrlProto",
+                    "description": "URL to an image file containing an office layout of the user's location for their organization, if one is available. For google.com, this image is from Corp Campus Maps."
+                },
+                "tileX": {
+                    "description": "Map tile x coordinate",
+                    "format": "double",
+                    "type": "number"
+                },
+                "tileY": {
+                    "description": "Map tile y coordinate",
+                    "format": "double",
+                    "type": "number"
                 }
             },
             "type": "object"
@@ -12784,31 +5696,6 @@
             },
             "type": "object"
         },
-        "MdbGroupProto": {
-            "description": "An entity from the MDB namespace that is to be interpreted as a group. If using this for authorization, you should do an exact match of the peer role against group_name or any of the names in the Chubby expansion of the MDB group named group_name.",
-            "id": "MdbGroupProto",
-            "properties": {
-                "groupName": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MdbUserProto": {
-            "description": "An entity from the MDB namespace that is to be interpreted as a user. If using this for authorization, you should only do an exact match on the peer role against user_name.",
-            "id": "MdbUserProto",
-            "properties": {
-                "gaiaId": {
-                    "description": "Do not set this field. Contact credentials-eng@ if you believe you absolutely need to use it. This is the @prod.google.com Gaia ID that corresponds to the MDB user, see go/authn-merge for details. This field may always be safely ignored when performing an authorization check.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "userName": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Media": {
             "description": "Media resource.",
             "id": "Media",
@@ -12820,735 +5707,6 @@
             },
             "type": "object"
         },
-        "MeetingSpace": {
-            "description": " A meeting space is a persistent object that is the context for one or more calls. The meeting space is what makes users find each other when they want to meet and to find shared resources. With two exceptions, all the fields in the meeting space resource are visible publicly to any client, even anonymous users. The exceptions are that * The call_info field is only visible to clients that have a device (as indicated by the meeting token) in the JOINED or HIDDEN state. * The meeting_alias field will only be set for users who are in the same domain as the meeting space. The meeting space resource (outside call_info) should only contain information necessary to join a call in the meeting space, and not any other metadata about the meeting space, such as what organization it belongs to or things related to ongoing calls.",
-            "id": "MeetingSpace",
-            "properties": {
-                "acceptedNumberClass": {
-                    "description": "Which number classes are accepted by this meeting at the moment? When there is no ongoing conference, this field may change independent of the version number of the MeetingSpace. When a conference starts, this field will be locked to the value at that time, and then will be unlocked again at the end of the conference.",
-                    "items": {
-                        "enum": [
-                            "NUMBER_CLASS_UNSPECIFIED",
-                            "LOW_COST",
-                            "HIGH_COST",
-                            "LEGACY"
-                        ],
-                        "enumDescriptions": [
-                            "No number class has been specified.",
-                            "The number has a low cost to receive calls on.",
-                            "The number has a high cost to receive calls on.",
-                            "Class for legacy numbers."
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "broadcastAccess": {
-                    "$ref": "BroadcastAccess",
-                    "description": "Broadcast access information for this meeting space."
-                },
-                "callInfo": {
-                    "$ref": "CallInfo",
-                    "description": "Information relevant to an ongoing conference. This field will be set in responses if the client requesting the meeting space has a device in one of the JOINED, HIDDEN, or MISSING_PREREQUISITES states. The field will also be set without a created device if the client requesting the meeting space is eligible to directly create a device in the JOINED state without knocking, eg a same-domain joiner. Can also only be updated by clients with a device in the JOINED state."
-                },
-                "gatewayAccess": {
-                    "$ref": "GatewayAccess",
-                    "description": "The interop gateway access information for the meeting space. A gateway access can be used when joining conferences from non-Google equipment through an interop gateway."
-                },
-                "gatewaySipAccess": {
-                    "description": "The SIP based access methods that can be used to join the conference.",
-                    "items": {
-                        "$ref": "GatewaySipAccess"
-                    },
-                    "type": "array"
-                },
-                "meetingAlias": {
-                    "description": "An optional alias for the meeting space. The alias can in some cases be resolved to the meeting space, similar to the meeting code. The limitation is that the user needs to be in the same meeting domain as the meeting space.",
-                    "type": "string"
-                },
-                "meetingCode": {
-                    "description": "A meeting code is a globally unique code which points to a meeting space. Note: Meeting codes may be regenerated, which will cause old meeting codes to become invalid.",
-                    "type": "string"
-                },
-                "meetingSpaceId": {
-                    "description": "A unique server-generated ID for the meeting space. This is the resource name of the meeting space resource and has the form `spaces/`, where is a sequence of characters in the [base64url set](https://tools.ietf.org/html/rfc4648#section-5), without any `=` characters.",
-                    "type": "string"
-                },
-                "meetingUrl": {
-                    "description": "A URL to identify and access the meeting space. Output only.",
-                    "type": "string"
-                },
-                "moreJoinUrl": {
-                    "description": "Output only. A URL that clients (e.g. Calendar) can use to show the web page with all join methods available for this meeting space. This link is also used in iOS universal links and Android intents, used for opening the \"More ways to join\" view in the Meet mobile apps. Example: https://tel.meet/mee-ting-cod?pin=1234567891011 Here, \"pin\" is the universal phone PIN. We include it explicitly to better support the offline case on the mobile. This is set when the meeting space has either a universal PIN or an interop PIN and clients who can show a \"more ways to join\" button should show it whenever this field is set.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "phoneAccess": {
-                    "description": "All regional phone access methods for this meeting space. Can be empty.",
-                    "items": {
-                        "$ref": "PhoneAccess"
-                    },
-                    "type": "array"
-                },
-                "settings": {
-                    "$ref": "Settings",
-                    "description": "Settings of the meeting space."
-                },
-                "universalPhoneAccess": {
-                    "$ref": "UniversalPhoneAccess",
-                    "description": "A universal phone access method for this meeting space. Can be unset."
-                }
-            },
-            "type": "object"
-        },
-        "Member": {
-            "id": "Member",
-            "properties": {
-                "roster": {
-                    "$ref": "Roster"
-                },
-                "user": {
-                    "$ref": "User"
-                }
-            },
-            "type": "object"
-        },
-        "MemberId": {
-            "description": "Eventually this can be updated to a oneOf User, Space (for nested spaces), Bots or Service, as and when these use cases come up.",
-            "id": "MemberId",
-            "properties": {
-                "rosterId": {
-                    "$ref": "RosterId",
-                    "description": "Unique, immutable ID of the Roster."
-                },
-                "userId": {
-                    "$ref": "UserId",
-                    "description": "Unique, immutable ID of the User."
-                }
-            },
-            "type": "object"
-        },
-        "MembershipChangeEvent": {
-            "id": "MembershipChangeEvent",
-            "properties": {
-                "leaveReason": {
-                    "description": "This should only be set when MembershipChange type is LEAVE.",
-                    "enum": [
-                        "LEAVE_REASON_UNKNOWN",
-                        "FORCE_HISTORY_POLICY_CHANGE",
-                        "USER_INITIATED"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "participantId": {
-                    "items": {
-                        "$ref": "StoredParticipantId"
-                    },
-                    "type": "array"
-                },
-                "type": {
-                    "enum": [
-                        "JOIN",
-                        "LEAVE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MembershipChangedMetadata": {
-            "description": "Annotation metadata to display system messages for membership changes. Next Tag: 13",
-            "id": "MembershipChangedMetadata",
-            "properties": {
-                "affectedMemberProfiles": {
-                    "items": {
-                        "$ref": "Member"
-                    },
-                    "type": "array"
-                },
-                "affectedMembers": {
-                    "description": "List of users and rosters whose membership status changed.",
-                    "items": {
-                        "$ref": "MemberId"
-                    },
-                    "type": "array"
-                },
-                "affectedMemberships": {
-                    "items": {
-                        "$ref": "AffectedMembership"
-                    },
-                    "type": "array"
-                },
-                "initiator": {
-                    "$ref": "UserId",
-                    "description": "The user whose action triggered this system message."
-                },
-                "initiatorProfile": {
-                    "$ref": "User",
-                    "description": "Complete member profiles, when ListTopicsRequest FetchOptions.USER is set. Otherwise, only the id will be filled in."
-                },
-                "initiatorType": {
-                    "description": "The type of the user who initiated this membership change.",
-                    "enum": [
-                        "INITIATOR_TYPE_UNSPECIFIED",
-                        "INITIATOR_TYPE_END_USER",
-                        "INITIATOR_TYPE_ADMIN"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "type": {
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "INVITED",
-                        "JOINED",
-                        "ADDED",
-                        "REMOVED",
-                        "LEFT",
-                        "BOT_ADDED",
-                        "BOT_REMOVED",
-                        "KICKED_DUE_TO_OTR_CONFLICT",
-                        "ROLE_UPDATED",
-                        "ROLE_TARGET_AUDIENCE_UPDATED",
-                        "SPACE_LIMIT_EXCEEDED",
-                        "HUMAN_MEMBERSHIP_DISPLAY_DISABLED"
-                    ],
-                    "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
-                        "Non-member -> Can join. Multiple groups and users.",
-                        "Can join -> Member. One user.",
-                        "Non-member -> Member. Multiple users.",
-                        "Can join -> Non-member. One group or user.",
-                        "Member -> Can join. One user.",
-                        "Bot added to the room.",
-                        "Bot removed from the room.",
-                        "This signifies the user is kicked because the user's OTR policy is conflicted with the room history settings. Joined -> Non-member. One user.",
-                        "MembershipRole changed. Multiple users.",
-                        "The room is now joinable by an",
-                        "Space limit exceeded",
-                        "HUMAN_MEMBERSHIP_DISPLAY_DISABLED indicates that the space has crossed the member size threshold above which human membership change system messages will be muted. This event can only occur once for a space over its lifetime. When this event is received, clients should display a system message stating that human membership changes will no longer be displayed in the space."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Menu": {
-            "description": "This is deprecated and please use SelectionControl by setting type to DROPDOWN.",
-            "id": "Menu",
-            "properties": {
-                "items": {
-                    "items": {
-                        "$ref": "MenuItem"
-                    },
-                    "type": "array"
-                },
-                "label": {
-                    "description": "Label used to be displayed ahead of the menu. It is optional.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the text field which is will be used in FormInput.",
-                    "type": "string"
-                },
-                "onChange": {
-                    "$ref": "FormAction",
-                    "description": "If specified, form is submitted when selection changed. If not specified, developer will need to specify a separate button."
-                }
-            },
-            "type": "object"
-        },
-        "MenuItem": {
-            "id": "MenuItem",
-            "properties": {
-                "selected": {
-                    "type": "boolean"
-                },
-                "text": {
-                    "description": "The text to be displayed.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value associated with this item which will be sent back to app scripts. Client should use as a form input value.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Message": {
-            "description": "Message posted to a Space.",
-            "id": "Message",
-            "properties": {
-                "annotations": {
-                    "description": "Annotations parsed and extracted from the text body.",
-                    "items": {
-                        "$ref": "Annotation"
-                    },
-                    "type": "array"
-                },
-                "appProfile": {
-                    "$ref": "AppsDynamiteSharedAppProfile",
-                    "description": "Custom display profile info for apps. Leave the field empty for real users."
-                },
-                "attachments": {
-                    "description": "Attachments parsed from incoming webhooks",
-                    "items": {
-                        "$ref": "Attachment"
-                    },
-                    "type": "array"
-                },
-                "attributes": {
-                    "$ref": "MessageAttributes",
-                    "description": "Lightweight message attributes which values are calculated and set in the servers."
-                },
-                "botResponses": {
-                    "description": "Responses from bots indicating if extra auth/config is needed.",
-                    "items": {
-                        "$ref": "BotResponse"
-                    },
-                    "type": "array"
-                },
-                "communalLabels": {
-                    "description": "Communal labels associated with a message. These exist on the message itself regardless of which user fetches them. Order of entries is arbitrary and will not list duplicates of the same label_id. See go/chat-labels-design for details.",
-                    "items": {
-                        "$ref": "CommunalLabelTag"
-                    },
-                    "type": "array"
-                },
-                "contentReportSummary": {
-                    "$ref": "ContentReportSummary",
-                    "readOnly": true
-                },
-                "createTime": {
-                    "description": "Time when the Message was posted in microseconds.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "creatorId": {
-                    "$ref": "UserId",
-                    "description": "ID of the User who posted the Message. This includes information to identify if this was posted by an App on behalf of a user."
-                },
-                "deletableBy": {
-                    "description": "Indicates who can delete the message. This field is set on the read path (e.g. ListTopics) but doesn’t have any effect on the write path (e.g. CreateMessageRequest).",
-                    "enum": [
-                        "PERMISSION_UNSPECIFIED",
-                        "PERMISSION_NO_ONE",
-                        "PERMISSION_CREATOR",
-                        "PERMISSION_MEMBER"
-                    ],
-                    "enumDescriptions": [
-                        "Default case, should never be used. If this data is encountered in the DB any request should throw an exception.",
-                        "No one except for the message creator/origin pair can mutate. This permission checks both gaia id and the request origin. Request origin can be Chat API or Chat UI. Mutation is allowed iff both attributes of the request match the original message creation. Use case: this allows historical 1P apps lock down message edit permission i.e. In Chat UI, humans cannot edit their messages created via these 1P apps. Do not use this for additional use cases.",
-                        "The message creator can mutate regardless of request origin. Use case: for messages created by human via Chat UI or Chat API. These messages can be mutated by the same human user via Chat UI or via any app on Chat API.",
-                        "Every human member of a space or the creator can mutate the entity. This excludes app acting on behalf of human via Chat API. Use case: This is to enable humans to delete messages created by apps."
-                    ],
-                    "type": "string"
-                },
-                "deleteTime": {
-                    "description": "Time when the Message was deleted in microseconds. This field is set to nonzero value only for Messages deleted globally.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "deleteTimeForRequester": {
-                    "description": "Time when the Message was per-user deleted by the message requester in microseconds. This field is set to nonzero value only for Message per-user deleted by the requester.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "deletedByVault": {
-                    "description": "Was this message deleted by Vault (Only used for Vault support) This is false if message is live or message was deleted by user.",
-                    "type": "boolean"
-                },
-                "dlpScanSummary": {
-                    "$ref": "DlpScanSummary",
-                    "description": "Data Loss Prevention scan information for this message. Messages are evaluated in the backend on create message/topic and edit message actions. DEPRECATED: Use DATA_LOSS_PREVENTION Annotation."
-                },
-                "editableBy": {
-                    "description": "Indicates who can edit the message. This field is set on the read path (e.g. ListTopics) but doesn’t have any effect on the write path (e.g. CreateMessageRequest).",
-                    "enum": [
-                        "PERMISSION_UNSPECIFIED",
-                        "PERMISSION_NO_ONE",
-                        "PERMISSION_CREATOR",
-                        "PERMISSION_MEMBER"
-                    ],
-                    "enumDescriptions": [
-                        "Default case, should never be used. If this data is encountered in the DB any request should throw an exception.",
-                        "No one except for the message creator/origin pair can mutate. This permission checks both gaia id and the request origin. Request origin can be Chat API or Chat UI. Mutation is allowed iff both attributes of the request match the original message creation. Use case: this allows historical 1P apps lock down message edit permission i.e. In Chat UI, humans cannot edit their messages created via these 1P apps. Do not use this for additional use cases.",
-                        "The message creator can mutate regardless of request origin. Use case: for messages created by human via Chat UI or Chat API. These messages can be mutated by the same human user via Chat UI or via any app on Chat API.",
-                        "Every human member of a space or the creator can mutate the entity. This excludes app acting on behalf of human via Chat API. Use case: This is to enable humans to delete messages created by apps."
-                    ],
-                    "type": "string"
-                },
-                "fallbackText": {
-                    "description": "A plain-text description of the attachment, used when clients cannot display formatted attachment (e.g. mobile push notifications).",
-                    "type": "string"
-                },
-                "id": {
-                    "$ref": "MessageId",
-                    "description": "ID of the resource."
-                },
-                "isContentPurged": {
-                    "description": "Whether the message is content purged. Content purged messages contain only data required for tombstone (see go/chat-infinite-tombstone). This field is only used by Vault to display tombstone and should only be set to true if the message is a tombstone.",
-                    "type": "boolean"
-                },
-                "isInlineReply": {
-                    "description": "Output only. Indicates if the message is an inline reply. Set to true only if the message's ParentPath is non-NULL. Currently, only inline replies have non-NULL ParentPath. See go/chat-be-inline-reply-indicator.",
-                    "readOnly": true,
-                    "type": "boolean"
-                },
-                "lastEditTime": {
-                    "description": "If the message was edited by a user, timestamp of the last edit, in microseconds.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "lastUpdateTime": {
-                    "description": "Time when the Message text was last updated in microseconds.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "localId": {
-                    "description": "A unique id specified on the client side.",
-                    "type": "string"
-                },
-                "messageIntegrationPayload": {
-                    "$ref": "AppsDynamiteSharedMessageIntegrationPayload",
-                    "description": "An optional payload (restricted to 1P applications) that will be stored with this message. This can only be set by the 1P API and should be used to deliver additional data such a 1P sync version, 1P entity ID to the client for more advanced functionality [Eg. inform Group Tasks tab of new version while linking, fetch & render a live Task/Meet call tile]."
-                },
-                "messageOrigin": {
-                    "description": "Where the message was posted from",
-                    "enum": [
-                        "ORIGIN_NOT_SET",
-                        "ORIGIN_DYNAMITE",
-                        "ORIGIN_BABEL_INTEROP_LIVE",
-                        "ORIGIN_BABEL_INTEROP_RETRY",
-                        "ORIGIN_BABEL",
-                        "ORIGIN_BABEL_DUAL_WRITE",
-                        "ORIGIN_BABEL_DUAL_WRITE_RETRY",
-                        "ORIGIN_BACKFILL_FROM_PAPYRUS",
-                        "ORIGIN_BACKFILL_FROM_GMAIL_ARCHIVE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "The message is from Babel (Hangouts Classic) interop.",
-                        "The message is from Babel interop retries from Manifold queue.",
-                        "The message came directly from Babel as source-of-truth",
-                        "The message came directly from Babel during dual-write",
-                        "The message came directly from Babel Manifold queue during dual write",
-                        "The message was backfilled by go/dinnertrain as part of go/storage-consolidation. The backfill origin corresponds to the BackfillState in which the message was created.",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "messageReference": {
-                    "$ref": "MessageReference",
-                    "description": "Contains reference to another message. It is used in shortcuts which are used to collect messages from different spaces with a certain common property into another space. For example, all @mentions of a user are collected into a mention shortcut space (go/chat-shortcuts-backend-design for more details). Most information from the source message (like text) are copied onto top-level Message fields of shortcut messages by the server. The MessageReference is helpful for clients to enable things like click navigation to source message."
-                },
-                "messageSearchInfo": {
-                    "$ref": "AppsDynamiteSharedMessageSearchInfo",
-                    "description": "Contains additional metadata that further annotates this message when returned as a search response. For example, this field can be used to highlight messages during search results rendering. In this case, clients can use this field to highlight matched segments in the message text_body (defined with tag 6)."
-                },
-                "messageState": {
-                    "description": "State of the message, indicating whether the message is visible to all members in the group or is only visible to the sender only, or the private_message_viewer if it is set.",
-                    "enum": [
-                        "PUBLIC",
-                        "PRIVATE"
-                    ],
-                    "enumDescriptions": [
-                        "Default - visible to the room / DM.",
-                        "Private state - only visible to the message creator, and the private_message_viewer if set."
-                    ],
-                    "type": "string"
-                },
-                "numberOfUnicodeEmojis": {
-                    "description": "Indicates the number of unicode emojis in the message.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "originAppSuggestions": {
-                    "description": "Indicates if this message contains any suggestions that were provided by any Apps.",
-                    "items": {
-                        "$ref": "AppsDynamiteSharedOriginAppSuggestion"
-                    },
-                    "type": "array"
-                },
-                "personalLabels": {
-                    "description": "Personal labels associated with a message for the viewing user. Order of entries is arbitrary and will not list duplicates of the same label_id. See go/chat-labels-design for details. NOTE: This will be unpopulated in the case of SpaceChangelog events.",
-                    "items": {
-                        "$ref": "PersonalLabelTag"
-                    },
-                    "type": "array"
-                },
-                "privateMessageInfos": {
-                    "description": "A list of per-user private information. This is deprecated, because we no longer plan to support partially private messages or private messages for multiple users. The message_state and private_message_viewer fields should be sufficient for this infrastructure.",
-                    "items": {
-                        "$ref": "PrivateMessageInfo"
-                    },
-                    "type": "array"
-                },
-                "privateMessageViewer": {
-                    "$ref": "UserId",
-                    "description": "Should only be set if the Message State is PRIVATE. If set, the message content is only visible to this user (and any apps associated with the message), as well as the message creator. If unset, a private message is visible to the message creator only."
-                },
-                "props": {
-                    "$ref": "MessageProps",
-                    "description": "Contains additional (currently Hangouts Classic only) properties applicable to this message."
-                },
-                "quotedByState": {
-                    "description": "Output only. Whether this message has been quoted by another message or not. Used by clients to handle message edit flows for messages that have been quoted.",
-                    "enum": [
-                        "QUOTED_BY_STATE_UNSPECIFIED",
-                        "QUOTED_BY_STATE_HAS_BEEN_QUOTED",
-                        "QUOTED_BY_STATE_HAS_NOT_BEEN_QUOTED"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified state for QuotedByState.",
-                        "State to indicate that this message is quoted by another message (excluding purged message).",
-                        "State to indicate that this message are not quoted by another message."
-                    ],
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "quotedMessageMetadata": {
-                    "$ref": "QuotedMessageMetadata",
-                    "description": "Output only. Metadata for a message that is quoted by this message.",
-                    "readOnly": true
-                },
-                "reactions": {
-                    "description": "A list of user reactions to this message. Ordered by the timestamp of the first reaction, ascending (oldest to newest).",
-                    "items": {
-                        "$ref": "AppsDynamiteSharedReaction"
-                    },
-                    "type": "array"
-                },
-                "reports": {
-                    "description": "Output only. Details of content reports. Set only when the request asks for it.",
-                    "items": {
-                        "$ref": "ContentReport"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                },
-                "retentionSettings": {
-                    "$ref": "AppsDynamiteSharedRetentionSettings",
-                    "description": "The retention settings of the message."
-                },
-                "richTextFormattingType": {
-                    "description": "Used by clients to correctly log format type for message creation due to complexity with client side optimistic update (see go/content-metric-post-send-logging for details). Currently, only set by server in the message or topic creation path.",
-                    "enum": [
-                        "NONE",
-                        "MARKDOWN",
-                        "FORMAT_ANNOTATIONS",
-                        "FORMAT_ANNOTATIONS_IGNORED",
-                        "FORMAT_ANNOTATIONS_IGNORED_WITH_MARKDOWN"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The formatting was specified as *markdown characters* in message text.",
-                        "The formatting was specified as {@link com.google.apps.dynamite.v1.shared.FormatMetadata} annotations.",
-                        "The client sent the format annotations, but didn't set the accept_format_annotations field to true. This shouldn't happen, but there might be some old clients that end up here.",
-                        "A combination of MARKDOWN and FORMAT_ANNOTATIONS_IGNORED."
-                    ],
-                    "type": "string"
-                },
-                "secondaryMessageKey": {
-                    "description": "A client-specified string that can be used to uniquely identify a message in a space, in lieu of `id.message_id`.",
-                    "type": "string"
-                },
-                "textBody": {
-                    "description": "Plaintext body of the Message.",
-                    "type": "string"
-                },
-                "tombstoneMetadata": {
-                    "$ref": "TombstoneMetadata",
-                    "description": "Information for the stoning of a Message."
-                },
-                "updaterId": {
-                    "$ref": "UserId",
-                    "description": "ID of the User who last updated (created/edited/deleted) the Message. This includes information to identify if this was updated by an App on behalf of a user."
-                },
-                "uploadMetadata": {
-                    "description": "UploadMetadata b/36864213 is an ongoing effort to move UploadMetadata out of annotations field and save it to upload_metadata field only. After the migration, UploadMetadata will only be saved in this field.",
-                    "items": {
-                        "$ref": "UploadMetadata"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MessageAdded": {
-            "description": "A message was added. Specifying id and initial labels.",
-            "id": "MessageAdded",
-            "properties": {
-                "attributeIds": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "labelIds": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "messageKey": {
-                    "$ref": "MultiKey"
-                },
-                "syncIds": {
-                    "description": "Note that there can be fewer sync ids than label ids.",
-                    "items": {
-                        "format": "uint32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MessageAttributes": {
-            "description": "Stores tombstone message attributes: go/tombstone-message-attributes-overview",
-            "id": "MessageAttributes",
-            "properties": {
-                "isTombstone": {
-                    "description": "If true: message is a tombstone in the client. Default false.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "MessageDeleted": {
-            "description": "Some (subset of the) messages in this thread were deleted.",
-            "id": "MessageDeleted",
-            "properties": {
-                "imapSyncMappings": {
-                    "description": "Value of coproc's message delete history record extension that exports /imapsync/folder attribute of deleted messages which have ^is label.",
-                    "items": {
-                        "$ref": "ImapSyncDelete"
-                    },
-                    "type": "array"
-                },
-                "messageKeys": {
-                    "items": {
-                        "$ref": "MultiKey"
-                    },
-                    "type": "array"
-                },
-                "wonderCardMappings": {
-                    "description": "Value of coproc's message delete history record extension that exports /wonder/message_mapping/{vertical} attribute of deleted messages which have smartmail label (eg. ^cob_sm_invoice, etc).",
-                    "items": {
-                        "$ref": "WonderCardDelete"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MessageId": {
-            "description": "Primary key for Message resource.",
-            "id": "MessageId",
-            "properties": {
-                "messageId": {
-                    "description": "Opaque, server-assigned ID of the Message. While this ID is guaranteed to be unique within the Space, it's not guaranteed to be globally unique.",
-                    "type": "string"
-                },
-                "parentId": {
-                    "$ref": "MessageParentId",
-                    "description": "ID of the Message's immediate parent."
-                }
-            },
-            "type": "object"
-        },
-        "MessageInfo": {
-            "id": "MessageInfo",
-            "properties": {
-                "authorUserType": {
-                    "description": "Message author’s user type (human/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"
-                },
-                "message": {
-                    "$ref": "Message",
-                    "description": "The content of a matching message."
-                },
-                "searcherMembershipState": {
-                    "description": "Searcher's membership state in the space where the message is posted.",
-                    "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"
-        },
-        "MessageParentId": {
-            "description": "Primary key identifying Message resource's immediate parent. For top-level Messages, either topic_id or chat_id is populated. For replies, message_id is populated with the topic Message's ID.",
-            "id": "MessageParentId",
-            "properties": {
-                "topicId": {
-                    "$ref": "TopicId",
-                    "description": "ID of the Topic this Message is posted to. NEXT TAG : 5"
-                }
-            },
-            "type": "object"
-        },
-        "MessageProps": {
-            "description": "Container for storing properties applicable to messages. For now (until storage consolidation is complete), it will only be used for babel props. In the future it could be used to house Dynamite properties for experimenting/rapid prototyping.",
-            "id": "MessageProps",
-            "properties": {
-                "babelProps": {
-                    "$ref": "BabelMessageProps"
-                }
-            },
-            "type": "object"
-        },
-        "MessageReference": {
-            "description": "Contains reference to another message. It is used in shortcuts which are used to collect messages from different spaces with a certain common property into another space. For example, all @mentions of a user are collected into a mention shortcut space (go/chat-shortcuts-backend-design for more details). Clients can use this reference to enable navigation to the source message when the shortcut message is clicked and also to identify a few other details about the source message. Other fields (like text) from the source message are copied on to the top-level fields in the Message proto by the server (More details in go/chat-shortcuts-client-server-design).",
-            "id": "MessageReference",
-            "properties": {
-                "sourceInfo": {
-                    "$ref": "SourceMessageInfo"
-                }
-            },
-            "type": "object"
-        },
-        "MessageSet": {
-            "description": "This is proto2's version of MessageSet.",
-            "id": "MessageSet",
-            "properties": {},
-            "type": "object"
-        },
         "Metadata": {
             "description": "Metadata of a matched search result.",
             "id": "Metadata",
@@ -13611,22 +5769,6 @@
             },
             "type": "object"
         },
-        "MultiKey": {
-            "description": "A union-like type for identifiying an object in storage. MultiKeys contain multiple key fields, each in a separate key space. At least one key field must be set. More than one key field may be set as long as all key values refer to the same object. All objects in storage have unique server_id keys. All MultiKeys returned from storage to storage clients will always have the server_id field set. When creating an object, if a MultiKey without a server_id is supplied to storage, the storage system will auto-assign a server ID to the new object. For all other storage requests (i.e. those not creating new objects), clients may omit server_id (as long as they supply another key). Instead of server ids, clients can specify string based client_assigned_perm_id keys. Mail message drafts are a prime example of these kinds of objects. Each time a user saves a new version of a draft, the storage system needs to create a new object with the updated draft content and needs to delete the object containing the old content. The new object gets a new SERVER_ID but should get the same CLIENT_ASSIGNED_PERM_ID as the now-deleted object containing the old content. Carrying forward the perm ID allows it to be used to consistently refer to the same logical object across revisions. These perm IDs save sync clients from having to deal with changing object IDs. For example, assume there's a mail message in storage with SERVER_ID = 123 and CLIENT_ASSIGNED_PERM_ID = \"foo\". The following are all valid ways of addressing the object using MultiKeys: 1) MultiKey { server_id = 123 } 2) MultiKey { server_id = 123, client_assigned_perm_id = \"foo\" } 3) MultiKey { client_assigned_perm_id = \"foo\" } Multikeys are never serialized in the storage. The individual keys are extracted and processed separately. Both the integer ids as well as string ids are indexed for efficient retrieval using the same fields in the backend. See go/tingle-multikeys for more information on background and motivation.",
-            "id": "MultiKey",
-            "properties": {
-                "clientAssignedPermId": {
-                    "description": "A client-assigned string based key.",
-                    "type": "string"
-                },
-                "serverId": {
-                    "description": "A server-assigned ID. This ID must be used only by Gmail and is constructed using millesecond ts << 20 + randomness. The ID affects the sort order of the index.",
-                    "format": "uint64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Name": {
             "description": "A person's name.",
             "id": "Name",
@@ -13676,16 +5818,6 @@
             },
             "type": "object"
         },
-        "OAuthConsumerProto": {
-            "description": "Represents an OAuth consumer, a/k/a AuthSub target. These principals are identified by domain name (e.g., example.com). Historically, Dasher domain GAIA group IDs have been used instead, but that doesn't work: http://go/tricky-gaia-ids",
-            "id": "OAuthConsumerProto",
-            "properties": {
-                "domain": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ObjectDefinition": {
             "description": "The definition for an object within a data source.",
             "id": "ObjectDefinition",
@@ -13775,91 +5907,6 @@
             },
             "type": "object"
         },
-        "OnClick": {
-            "id": "OnClick",
-            "properties": {
-                "action": {
-                    "$ref": "FormAction"
-                },
-                "link": {
-                    "description": "This can be used as a short form for OpenLink with the default OpenAs and OnClose. It may be undeprecated if this proves to be handy for developers.",
-                    "type": "string"
-                },
-                "openLink": {
-                    "$ref": "OpenLink"
-                },
-                "openLinkAction": {
-                    "$ref": "FormAction",
-                    "description": "An add-on triggers this action when the form action needs to open a link. This differs from the open_link above in that this needs to talk to server to get the link. Thus some preparation work is required for web client to do before the open link action response comes back."
-                }
-            },
-            "type": "object"
-        },
-        "OpenCreatedDraftActionMarkup": {
-            "id": "OpenCreatedDraftActionMarkup",
-            "properties": {
-                "draftId": {
-                    "description": "The ID of the newly created draft in the form \"r123\".",
-                    "type": "string"
-                },
-                "draftStorageId": {
-                    "description": "The server storage ID in hex format, for example,\"15e9fa622ce1029d\".",
-                    "type": "string"
-                },
-                "draftThreadId": {
-                    "description": "The ID of the thread containing the newly created draft, for example, \"15e9fa622ce1029d\".",
-                    "type": "string"
-                },
-                "draftThreadServerPermId": {
-                    "description": "The server permanent ID for the draft's thread. This field isn't set anywhere, and it's ignored when processing OpenCreatedDraftActionMarkup. Supply and use draftThreadStorageId instead.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OpenLink": {
-            "id": "OpenLink",
-            "properties": {
-                "loadIndicator": {
-                    "description": "Next available ID: 5",
-                    "enum": [
-                        "NONE",
-                        "SPINNER"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "onClose": {
-                    "enum": [
-                        "NOTHING",
-                        "RELOAD_ADD_ON"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "openAs": {
-                    "enum": [
-                        "FULL_SIZE",
-                        "OVERLAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "url": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Operation": {
             "description": "This resource represents a long-running operation that is the result of a network API call.",
             "id": "Operation",
@@ -13895,149 +5942,14 @@
             },
             "type": "object"
         },
-        "OsVersion": {
-            "id": "OsVersion",
+        "PeoplePromotionCard": {
+            "id": "PeoplePromotionCard",
             "properties": {
-                "majorVersion": {
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "minorVersion": {
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "tertiaryVersion": {
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "OtrChatMessageEvent": {
-            "id": "OtrChatMessageEvent",
-            "properties": {
-                "expirationTimestampUsec": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "kansasRowId": {
-                    "type": "string"
-                },
-                "kansasVersionInfo": {
-                    "type": "string"
-                },
-                "messageOtrStatus": {
-                    "enum": [
-                        "OFF_THE_RECORD",
-                        "ON_THE_RECORD"
-                    ],
-                    "enumDescriptions": [
-                        "The conversation is completely off the record.",
-                        "The conversation is completely on the record."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OtrModificationEvent": {
-            "id": "OtrModificationEvent",
-            "properties": {
-                "newOtrStatus": {
-                    "enum": [
-                        "OFF_THE_RECORD",
-                        "ON_THE_RECORD"
-                    ],
-                    "enumDescriptions": [
-                        "The conversation is completely off the record.",
-                        "The conversation is completely on the record."
-                    ],
-                    "type": "string"
-                },
-                "newOtrToggle": {
-                    "enum": [
-                        "ENABLED",
-                        "DISABLED"
-                    ],
-                    "enumDescriptions": [
-                        "The conversation can be toggled",
-                        "The conversation cannot be toggled"
-                    ],
-                    "type": "string"
-                },
-                "oldOtrStatus": {
-                    "enum": [
-                        "OFF_THE_RECORD",
-                        "ON_THE_RECORD"
-                    ],
-                    "enumDescriptions": [
-                        "The conversation is completely off the record.",
-                        "The conversation is completely on the record."
-                    ],
-                    "type": "string"
-                },
-                "oldOtrToggle": {
-                    "enum": [
-                        "ENABLED",
-                        "DISABLED"
-                    ],
-                    "enumDescriptions": [
-                        "The conversation can be toggled",
-                        "The conversation cannot be toggled"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PackagingServiceClient": {
-            "description": "Developers register a client in Google API Console to get the deep-linking feature on Google+ posts or frames about their apps. The client data is stored in this proto.",
-            "id": "PackagingServiceClient",
-            "properties": {
-                "androidPackageName": {
-                    "description": "Android app's package name to generate the deep-link URI.",
-                    "type": "string"
-                },
-                "iosAppStoreId": {
-                    "description": "iOS app's App Store ID to generate the App Store URL when app is not installed on device.",
-                    "type": "string"
-                },
-                "iosBundleId": {
-                    "description": "iOS app's bundle ID to generate the deep-link URI.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Type of Google API Console client.",
-                    "enum": [
-                        "ANDROID",
-                        "IOS"
-                    ],
-                    "enumDescriptions": [
-                        "Client for Android app.",
-                        "Client for iOS app."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PaygateInfo": {
-            "description": "Information provided to clients so that they can show upgrade promos and warnings on call ending early (for non-paying users).",
-            "id": "PaygateInfo",
-            "properties": {
-                "callEndingSoonWarningTime": {
-                    "description": "Time when client should show message that the call is ending soon.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "callEndingTime": {
-                    "description": "Time when the call will end if the user does not upgrade (after in-call upgrade support check has been implemented).",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "showUpgradePromos": {
-                    "description": "This boolean is used by clients to decide whether the user should be shown promos to upgrade.",
-                    "type": "boolean"
+                "people": {
+                    "items": {
+                        "$ref": "PersonCore"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -14096,39 +6008,197 @@
             },
             "type": "object"
         },
-        "PersonalLabelTag": {
-            "description": "An individual instance (or \"tag\") of a label configured as a personal type that's associated with a message.",
-            "id": "PersonalLabelTag",
+        "PersonCore": {
+            "description": "Information for rendering a person. NEXT ID: 37",
+            "id": "PersonCore",
             "properties": {
-                "labelId": {
-                    "description": "A string ID representing the label. Possible ID values are documented at go/chat-labels-howto:ids. Examples: \"^t\" for \"Starred\", \"^nu\" for \"Nudged\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PhoneAccess": {
-            "description": "Phone access contains information required to dial into a conference using a regional phone number and a PIN that is specific to that phone number.",
-            "id": "PhoneAccess",
-            "properties": {
-                "formattedPhoneNumber": {
-                    "description": "The phone number to dial for this meeting space in INTERNATIONAL format. Full phone number with a leading '+' character and whitespace separations.",
+                "addressMeAs": {
+                    "description": "Instructions for how to address this person (e.g. custom pronouns). For google.com this is a set of pronouns from a defined list of options.",
                     "type": "string"
                 },
-                "languageCode": {
-                    "description": "The BCP 47/LDML language code for the language associated with this phone access. To be parsed by the i18n LanguageCode utility. Examples: \"es-419\" for Latin American Spanish, \"fr-CA\" for Canadian French.",
+                "adminTo": {
+                    "description": "People the profile owner is an admin to. Note that not all fields of these PersonCores will be set, in particular, relationships will be empty.",
+                    "items": {
+                        "$ref": "PersonCore"
+                    },
+                    "type": "array"
+                },
+                "admins": {
+                    "description": "The profile owner's admins in no particular order. Note that not all fields of these PersonCores will be set, in particular, relationships will be empty.",
+                    "items": {
+                        "$ref": "PersonCore"
+                    },
+                    "type": "array"
+                },
+                "availabilityStatus": {
+                    "enum": [
+                        "UNKNOWN",
+                        "OUT_OF_OFFICE",
+                        "OUTSIDE_WORKING_HOURS",
+                        "AVAILABLE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
                     "type": "string"
                 },
-                "phoneNumber": {
-                    "description": "The phone number to dial for this meeting space in E.164 format. Full phone number with a leading '+' character.",
+                "birthday": {
+                    "$ref": "Date",
+                    "description": "Person birthday."
+                },
+                "calendarUrl": {
+                    "$ref": "SafeUrlProto",
+                    "description": "The URL to open the profile owner's primary calendar."
+                },
+                "chatUrl": {
+                    "$ref": "SafeUrlProto",
+                    "description": "The URL to start a chat conversation with the profile owner. For google.com this is a Hangouts URL."
+                },
+                "costCenter": {
+                    "description": "Person's cost center as a string, e.g. \"926: Googler Apps\".",
                     "type": "string"
                 },
-                "pin": {
-                    "description": "The PIN that users must enter after dialing the given number. The PIN consists of only decimal digits and the length may vary.",
+                "department": {
+                    "description": "The person's Organization department, e.g. \"People Operations\". For google.com this is usually called \"area\".",
                     "type": "string"
                 },
-                "regionCode": {
-                    "description": "The CLDR/ISO 3166 region code for the country associated with this phone access. To be parsed by the i18n RegionCode utility. Example: \"SE\" for Sweden.",
+                "directReports": {
+                    "description": "A subset of the profile owner's direct reports. The number of entities here may be less than total_direct_reports_count, because typically ProfileResponse does not include all the person's reports, if there are too many to retrieve efficiently. Note that not all fields of these PersonCores will be set, in particular, relationships will be empty.",
+                    "items": {
+                        "$ref": "PersonCore"
+                    },
+                    "type": "array"
+                },
+                "dottedLineManagers": {
+                    "description": "The profile owner's direct dotted line managers in no particular order. Note that not all fields of these PersonCores will be set, in particular, relationships will be empty.",
+                    "items": {
+                        "$ref": "PersonCore"
+                    },
+                    "type": "array"
+                },
+                "dottedLineReports": {
+                    "description": "A subset of the profile owner's dotted-line reports. The number of entities here may be less than total_dlr_count. Note that not all fields of these PersonCores will be set, in particular, relationships will be empty.",
+                    "items": {
+                        "$ref": "PersonCore"
+                    },
+                    "type": "array"
+                },
+                "emails": {
+                    "description": "E-mail addresses of the person. The primary or preferred email should be first.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "employeeId": {
+                    "description": "Person's employee number (external ID of type \"organization\") For google.com this is the badge number (e.g. 2 for Larry Page).",
+                    "type": "string"
+                },
+                "fingerprint": {
+                    "description": "A fingerprint used by PAPI to reliably determine if a resource has changed Externally it is used as part of the etag.",
+                    "type": "string"
+                },
+                "ftePermille": {
+                    "description": "Full-time equivalent (in ‰) (e.g. 800 for a person who's working 80%).",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "geoLocation": {
+                    "$ref": "MapInfo"
+                },
+                "gmailUrl": {
+                    "type": "string"
+                },
+                "jobTitle": {
+                    "description": "Profile owner's job title (e.g. \"Software Engineer\"). For google.com this is the Workday preferred job title.",
+                    "type": "string"
+                },
+                "keywordTypes": {
+                    "description": "List of keys to use from the map 'keywords'.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "keywords": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Custom keywords the domain admin has added.",
+                    "type": "object"
+                },
+                "links": {
+                    "description": "Custom links the profile owner has added.",
+                    "items": {
+                        "$ref": "EnterpriseTopazFrontendTeamsLink"
+                    },
+                    "type": "array"
+                },
+                "location": {
+                    "description": "Detailed desk location within the company. For google.com this is the desk location code (e.g. \"DE-MUC-ARP-6T2-6T2C0C\") if the person has a desk.",
+                    "type": "string"
+                },
+                "managers": {
+                    "description": "The profile owner's management chain from top to bottom, where managers[0] is the CEO, manager[N-2] is the person's manager's manager and managers[N-1] is the person's direct manager. Note that not all fields of these PersonCores will be set, in particular, relationships will be empty.",
+                    "items": {
+                        "$ref": "PersonCore"
+                    },
+                    "type": "array"
+                },
+                "mission": {
+                    "description": "Custom mission statement the profile owner has added.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Human-readable Unicode display name.",
+                    "type": "string"
+                },
+                "officeLocation": {
+                    "description": "Office/building identifier within the company. For google.com this is the office code (e.g. \"DE-MUC-ARP\").",
+                    "type": "string"
+                },
+                "personId": {
+                    "description": "The person's obfuscated Gaia ID.",
+                    "type": "string"
+                },
+                "phoneNumbers": {
+                    "items": {
+                        "$ref": "EnterpriseTopazFrontendTeamsPersonCorePhoneNumber"
+                    },
+                    "type": "array"
+                },
+                "photoUrl": {
+                    "$ref": "SafeUrlProto",
+                    "description": "Person photo."
+                },
+                "postalAddress": {
+                    "description": "Postal address of office/building.",
+                    "type": "string"
+                },
+                "totalDirectReportsCount": {
+                    "description": "Total count of the profile owner's direct reports.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "totalDlrCount": {
+                    "description": "Total count of the profile owner's dotted-line reports.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "totalFteCount": {
+                    "description": "The sum of all profile owner's reports and their own full-time-equivalents in ‰ (e.g. 1800 if one report is working 80% and profile owner 100%).",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "username": {
+                    "description": "External ID of type \"login_id\" for the profile. For google.com this is the username/LDAP.",
+                    "type": "string"
+                },
+                "waldoComeBackTime": {
+                    "format": "google-datetime",
                     "type": "string"
                 }
             },
@@ -14169,16 +6239,6 @@
             },
             "type": "object"
         },
-        "PinnedItemId": {
-            "id": "PinnedItemId",
-            "properties": {
-                "driveId": {
-                    "description": "Identifier for a Drive file (e.g. Docs, Sheets, Slides).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "PollItemsRequest": {
             "id": "PollItemsRequest",
             "properties": {
@@ -14236,120 +6296,6 @@
             },
             "type": "object"
         },
-        "PossiblyTrimmedModel": {
-            "description": "This message contains either the device model, or a prefix of the device model (AKA a trimmed device model). The \"is_trimmed\" field indicates which one it is.",
-            "id": "PossiblyTrimmedModel",
-            "properties": {
-                "isTrimmed": {
-                    "type": "boolean"
-                },
-                "model": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PostiniUserProto": {
-            "description": "See http://s/?fileprint=//depot/google3/security/authentication/postini/auth_token.proto",
-            "id": "PostiniUserProto",
-            "properties": {
-                "postiniUserId": {
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PreState": {
-            "description": "State of the thread previous to the update. This really just describes the label state of all messages before the update.",
-            "id": "PreState",
-            "properties": {
-                "labelIds": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "messageKey": {
-                    "$ref": "MultiKey"
-                },
-                "syncIds": {
-                    "description": "Note that there can be fewer sync ids than label ids.",
-                    "items": {
-                        "format": "uint32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "threadKey": {
-                    "$ref": "MultiKey"
-                }
-            },
-            "type": "object"
-        },
-        "PrefDeleted": {
-            "description": "PREF_DELETED",
-            "id": "PrefDeleted",
-            "properties": {},
-            "type": "object"
-        },
-        "PrefUpdate": {
-            "description": "HistoryRecord for changes associated with prefs, namely: PREF_WRITTEN PREF_DELETED",
-            "id": "PrefUpdate",
-            "properties": {
-                "name": {
-                    "description": "Name of the affected preference.",
-                    "type": "string"
-                },
-                "preState": {
-                    "$ref": "FuseboxPrefUpdatePreState"
-                },
-                "prefDeleted": {
-                    "$ref": "PrefDeleted"
-                },
-                "prefWritten": {
-                    "$ref": "PrefWritten"
-                }
-            },
-            "type": "object"
-        },
-        "PrefWritten": {
-            "description": "PREF_WRITTEN",
-            "id": "PrefWritten",
-            "properties": {
-                "value": {
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Presenter": {
-            "description": "Presenter contains information about which device is currently presenting as well as which device requested the presenter to be set.",
-            "id": "Presenter",
-            "properties": {
-                "annotationInfo": {
-                    "$ref": "AnnotationInfo",
-                    "description": "Screen annotation information associated with this presentation session."
-                },
-                "byDeviceId": {
-                    "description": "The device resource name of the device which requested the current presenter to be set. This field can not be modified by clients.",
-                    "type": "string"
-                },
-                "copresenterDeviceIds": {
-                    "description": "The device resource names of other devices which can control the current presentation.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "presenterDeviceId": {
-                    "description": "The device resource name of the currently presenting device.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Principal": {
             "description": "Reference to a user, group, or domain.",
             "id": "Principal",
@@ -14369,222 +6315,6 @@
             },
             "type": "object"
         },
-        "PrincipalProto": {
-            "description": "A Principal represents something to which permissions are assigned, often but not always a user or group of some kind. It is most appropriate for use in ACLs and authorization checks. Callers should prefer to use the wrapper classes in google3/security/credentials/public/principal.h google3/java/com/google/security/credentials/Principal.java google3/security/credentials/go/principal.go unless direct proto access is essential. If you update this protocol buffer, please update the wrapper classes as well. LINT.IfChange",
-            "id": "PrincipalProto",
-            "properties": {
-                "allAuthenticatedUsers": {
-                    "$ref": "AllAuthenticatedUsersProto",
-                    "description": "scope = ALL_AUTHENTICATED_USERS"
-                },
-                "capTokenHolder": {
-                    "$ref": "CapTokenHolderProto",
-                    "description": "scope = CAP_TOKEN_HOLDER"
-                },
-                "chat": {
-                    "$ref": "ChatProto",
-                    "description": "scope = CHAT"
-                },
-                "circle": {
-                    "$ref": "CircleProto",
-                    "description": "scope = CIRCLE"
-                },
-                "cloudPrincipal": {
-                    "$ref": "CloudPrincipalProto",
-                    "description": "scope = CLOUD_PRINCIPAL"
-                },
-                "contactGroup": {
-                    "$ref": "ContactGroupProto",
-                    "description": "scope = CONTACT_GROUP"
-                },
-                "emailOwner": {
-                    "$ref": "EmailOwnerProto",
-                    "description": "scope = EMAIL_OWNER"
-                },
-                "event": {
-                    "$ref": "EventProto",
-                    "description": "scope = EVENT"
-                },
-                "gaiaGroup": {
-                    "$ref": "GaiaGroupProto",
-                    "description": "scope = GAIA_GROUP"
-                },
-                "gaiaUser": {
-                    "$ref": "GaiaUserProto",
-                    "description": "scope = GAIA_USER"
-                },
-                "host": {
-                    "$ref": "HostProto",
-                    "description": "scope = HOST"
-                },
-                "ldapGroup": {
-                    "$ref": "LdapGroupProto",
-                    "description": "scope = LDAP_GROUP"
-                },
-                "ldapUser": {
-                    "$ref": "LdapUserProto",
-                    "description": "scope = LDAP_USER"
-                },
-                "mdbGroup": {
-                    "$ref": "MdbGroupProto",
-                    "description": "scope = MDB_GROUP"
-                },
-                "mdbUser": {
-                    "$ref": "MdbUserProto",
-                    "description": "scope = MDB_USER"
-                },
-                "oauthConsumer": {
-                    "$ref": "OAuthConsumerProto",
-                    "description": "scope = OAUTH_CONSUMER;"
-                },
-                "postiniUser": {
-                    "$ref": "PostiniUserProto",
-                    "description": "scope = POSTINI_USER"
-                },
-                "rbacRole": {
-                    "$ref": "RbacRoleProto",
-                    "description": "scope = RBAC_ROLE"
-                },
-                "rbacSubject": {
-                    "$ref": "RbacSubjectProto",
-                    "description": "scope = RBAC_SUBJECT"
-                },
-                "resourceRole": {
-                    "$ref": "ResourceRoleProto",
-                    "description": "scope = RESOURCE_ROLE"
-                },
-                "scope": {
-                    "description": "This is only optional because required enums cannot be extended. Currently required.",
-                    "enum": [
-                        "INVALID",
-                        "GAIA_USER",
-                        "GAIA_GROUP",
-                        "LDAP_USER",
-                        "LDAP_GROUP",
-                        "MDB_USER",
-                        "MDB_GROUP",
-                        "POSTINI_USER",
-                        "CONTACT_GROUP",
-                        "SIMPLE_SECRET_HOLDER",
-                        "SIGNING_KEY_POSSESSOR",
-                        "ALL_AUTHENTICATED_USERS",
-                        "OAUTH_CONSUMER",
-                        "HOST",
-                        "SOCIAL_GRAPH_NODE",
-                        "EMAIL_OWNER",
-                        "CAP_TOKEN_HOLDER",
-                        "CIRCLE",
-                        "SQUARE",
-                        "EVENT",
-                        "RESOURCE_ROLE",
-                        "CHAT",
-                        "YOUTUBE_USER",
-                        "UNUSED_ZWIEBACK_SESSION",
-                        "ZWIEBACK_SESSION",
-                        "RBAC_ROLE",
-                        "RBAC_SUBJECT",
-                        "CLOUD_PRINCIPAL"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "next tag: 29"
-                    ],
-                    "type": "string"
-                },
-                "signingKeyPossessor": {
-                    "$ref": "SigningKeyPossessorProto",
-                    "description": "scope = SIGNING_KEY_POSSESSOR"
-                },
-                "simpleSecretHolder": {
-                    "$ref": "SimpleSecretHolderProto",
-                    "description": "scope = SIMPLE_SECRET_HOLDER"
-                },
-                "socialGraphNode": {
-                    "$ref": "SocialGraphNodeProto",
-                    "description": "scope = SOCIAL_GRAPH_NODE"
-                },
-                "square": {
-                    "$ref": "SquareProto",
-                    "description": "scope = SQUARE"
-                },
-                "youtubeUser": {
-                    "$ref": "YoutubeUserProto",
-                    "description": "scope = YOUTUBE_USER"
-                },
-                "zwiebackSession": {
-                    "$ref": "ZwiebackSessionProto",
-                    "description": "scope = ZWIEBACK_SESSION"
-                }
-            },
-            "type": "object"
-        },
-        "PrivateMessageInfo": {
-            "description": "Private message information specific to a given user. DEPRECATED: Use the privateMessageViewer field in CreateMessageInfo instead.",
-            "id": "PrivateMessageInfo",
-            "properties": {
-                "annotations": {
-                    "description": "Annotations private to {@code userId}.",
-                    "items": {
-                        "$ref": "Annotation"
-                    },
-                    "type": "array"
-                },
-                "attachments": {
-                    "description": "Attachments private to {@code userId}.",
-                    "items": {
-                        "$ref": "Attachment"
-                    },
-                    "type": "array"
-                },
-                "contextualAddOnMarkup": {
-                    "items": {
-                        "$ref": "GoogleChatV1ContextualAddOnMarkup"
-                    },
-                    "type": "array"
-                },
-                "gsuiteIntegrationMetadata": {
-                    "items": {
-                        "$ref": "GsuiteIntegrationMetadata"
-                    },
-                    "type": "array"
-                },
-                "text": {
-                    "description": "Text private to {@code user_id}. Initial restriction: Only one of public text or private text is rendered on the client. So if public text is set, private text is ignored.",
-                    "type": "string"
-                },
-                "userId": {
-                    "$ref": "UserId",
-                    "description": "Required. The elements in this struct are visible to this user."
-                }
-            },
-            "type": "object"
-        },
         "ProcessingError": {
             "id": "ProcessingError",
             "properties": {
@@ -14697,42 +6427,6 @@
             },
             "type": "object"
         },
-        "Provenance": {
-            "description": "This field records where the ItemScope was retrieved, if it was created via a web fetch.",
-            "id": "Provenance",
-            "properties": {
-                "annotationBlob": {
-                    "description": "Annotation blob from Annotation Service.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "canonicalUrl": {
-                    "description": "Canonical url of the retrieved_url, if one was resolved during retrieval, for example, if a rel=\"canonical\" link tag was provided in the retrieved web page.",
-                    "type": "string"
-                },
-                "inputUrl": {
-                    "description": "The url originally passed in the PRS request, which should be used to re-discover the content. Note that this URL may be a forwarding service or link shortener (bit.ly), so it should not be assumed to be canonical, but should be used for navigation back to the original source of the itemscope.",
-                    "type": "string"
-                },
-                "itemtype": {
-                    "description": "Contains exact types as parsed, whether or not we recognized that type at parse time. If an itemscope is created by merging SchemaOrg markup and open graph markup then the first itemtype would be schemaorg type, the second would be open graph and so on. example: http://schema.org/VideoObject, og:video.movie Plain text; usually a URL",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "retrievedTimestampMsec": {
-                    "description": "The server retrieved timestamp (in msec).",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "retrievedUrl": {
-                    "description": "The final URL that was the actual source of the itemscope, after any redirects.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "PushItem": {
             "description": "Represents an item to be pushed to the indexing queue.",
             "id": "PushItem",
@@ -14801,6 +6495,17 @@
             },
             "type": "object"
         },
+        "QueryActivity": {
+            "description": "Details about a user's query activity.",
+            "id": "QueryActivity",
+            "properties": {
+                "query": {
+                    "description": "User input query to be logged/removed.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "QueryCountByStatus": {
             "id": "QueryCountByStatus",
             "properties": {
@@ -15010,351 +6715,25 @@
             "properties": {},
             "type": "object"
         },
-        "QuotedMessageMetadata": {
-            "description": "Quote metadata: go/message-quoting-be-dd-v2. This proto is only used on the read path. For the request proto, refer to `QuotedMessagePayload`. Fields are either derived from storage directly from the Item this metadata belongs to, or is hydrated at read time from another Item read. Note: QuotedMessageMetadata proto is similar to Message proto with less field. Reasons to differtiate QuotedMessageMetadata from Message are: 1. Not all fields for original message is applicable for quoted message. (E.g. reactions, is_inline_reply, etc.), thus separting out for confusion. 2. We don't support nested message quoting. For more detailed discussion, please see http://shortn/_VsSXQb2C7P. For future reference: if your new feature/field will be supported in message quoting feature (go/chat-quoting-prd), you will need to add that field within QuotedMessageMetadata",
-            "id": "QuotedMessageMetadata",
+        "RemoveActivityRequest": {
+            "description": "Remove Logged Activity Request.",
+            "id": "RemoveActivityRequest",
             "properties": {
-                "annotations": {
-                    "description": "Output only. Snapshot of the annotations of the quoted message.",
-                    "items": {
-                        "$ref": "Annotation"
-                    },
-                    "readOnly": true,
-                    "type": "array"
+                "requestOptions": {
+                    "$ref": "RequestOptions",
+                    "description": "Request options, such as the search application and clientId."
                 },
-                "appProfile": {
-                    "$ref": "AppsDynamiteSharedAppProfile",
-                    "description": "Output only. Custom display profile info for apps. Will be empty for real users.",
-                    "readOnly": true
-                },
-                "botAttachmentState": {
-                    "description": "Output only. The bot attachment state of the quoted message. Used by clients to display a bot attachment indicator in the UI.",
-                    "enum": [
-                        "BOT_ATTACHMENT_STATE_UNSPECIFIED",
-                        "BOT_ATTACHMENT_STATE_HAS_BOT_ATTACHMENT",
-                        "BOT_ATTACHMENT_STATE_NO_BOT_ATTACHMENT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "createTimeMicros": {
-                    "description": "Output only. Time when the quoted message was posted in microseconds.",
-                    "format": "int64",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "creatorId": {
-                    "$ref": "UserId",
-                    "description": "Output only. ID of the User who posted the quoted message. This includes information to identify if the quoted message was posted by an App on behalf of a user.",
-                    "readOnly": true
-                },
-                "lastEditTimeMicros": {
-                    "description": "Output only. Time when the quoted message was last edited by a user at the time when quoting action happens. Time is in microseconds.",
-                    "format": "int64",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "lastUpdateTimeWhenQuotedMicros": {
-                    "description": "The `last_update_time` of the original message when the client initiated the quote creation. This is derived from the request payload passed from clients. Used to fetch the quoted message contents at a specific time on the read path. This field is populated from storage directly.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "messageId": {
-                    "$ref": "MessageId",
-                    "description": "MessageId of the original message that is being quoted. This is derived from the request payload passed from clients. This field is populated from storage directly."
-                },
-                "messageState": {
-                    "description": "Output only. The state of the quoted message. Used by clients to display tombstones for quotes that reference a deleted message.",
-                    "enum": [
-                        "MESSAGE_STATE_UNSPECIFIED",
-                        "MESSAGE_STATE_ACTIVE",
-                        "MESSAGE_STATE_DELETED",
-                        "MESSAGE_STATE_OTR_EDITED"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The original message is present in storage and not deleted; the message contents can be hydrated.",
-                        "The original message has been deleted; the message contents cannot be hydrated.",
-                        "The OTR original message was edited and therefore no longer retrievable from storage; the message contents cannot be hydrated. See go/message-quoting-otr-edits for more context."
-                    ],
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "retentionSettings": {
-                    "$ref": "AppsDynamiteSharedRetentionSettings",
-                    "description": "Output only. The retention (OTR) settings of the quoted message.",
-                    "readOnly": true
-                },
-                "textBody": {
-                    "description": "Output only. Snapshot of the text body of the quoted message.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "updaterId": {
-                    "$ref": "UserId",
-                    "description": "Output only. ID of the User who last updated (created/edited/deleted) the quoted message at the time when quoting action happens. This includes information to identify if the quoted message was posted by an App on behalf of a user.",
-                    "readOnly": true
-                },
-                "uploadMetadata": {
-                    "description": "Output only. Upload metadata of the quoted message.",
-                    "items": {
-                        "$ref": "UploadMetadata"
-                    },
-                    "readOnly": true,
-                    "type": "array"
+                "userActivity": {
+                    "$ref": "UserActivity",
+                    "description": "User Activity containing the data to be deleted."
                 }
             },
             "type": "object"
         },
-        "Rank": {
-            "description": "The rank contains a tuple of numbers which may be used as a general sort order. The rank should be treated as an ordered set of numbers, where the ordering is done in descending order of the most significant rank member. For example, given the following ranks described as (primary, secondary): (1,1), (1,2), (2,2) (2,1) The descending rank-order is: (2,2) > (2,1) > (1,2) > (1,1)",
-            "id": "Rank",
-            "properties": {
-                "primary": {
-                    "description": "The primary rank is the most significant rank member. This rank element should always be present. Items with higher primary rank are always considered of higher rank than those of lower primary rank.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "secondary": {
-                    "description": "The secondary rank may be used to rank items of identical primary rank. This rank element should always be present.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RbacRoleProto": {
-            "description": "Principal associated with a given RBAC role. This principal is used by Sphinx Provisioning Service for RBAC provisionable (go/sphinx-rbacz).",
-            "id": "RbacRoleProto",
-            "properties": {
-                "name": {
-                    "type": "string"
-                },
-                "objectId": {
-                    "type": "string"
-                },
-                "rbacNamespace": {
-                    "description": "DEPRECATED as of 01.11.2019",
-                    "type": "string"
-                },
-                "rbacRoleName": {
-                    "description": "Format: \"role/z?\" - \"role\" is the Sphinx globally unique name of the Sphinx role that provisions the RBAC role. - \"/z?\" suffix indicates which Zanzibar environment stores the role membership data (\"/zd\": dev, \"/zs\": staging, \"/zp\": prod, \"/zt\": local test instance). Example: \"mysystem_myrole/zp\"",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RbacSubjectProto": {
-            "description": "Principal associated with a given RBAC subject. This principal is used by Sphinx Provisioning Service for RBAC provisionable (go/sphinx-rbacz).",
-            "id": "RbacSubjectProto",
-            "properties": {
-                "username": {
-                    "description": "Format \"username\" without \"@domain\", e.g., \"bogdand\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ReactionInfo": {
-            "description": "Contains information about an emoji reaction.",
-            "id": "ReactionInfo",
-            "properties": {
-                "emoji": {
-                    "description": "Unicode string representing a single emoji.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ReadReceiptsSettingsUpdatedMetadata": {
-            "id": "ReadReceiptsSettingsUpdatedMetadata",
-            "properties": {
-                "readReceiptsEnabled": {
-                    "description": "The new read receipts state.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Recipient": {
-            "id": "Recipient",
-            "properties": {
-                "email": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RecordingEvent": {
-            "description": "A recording event is something that happens to the recording in a conference.",
-            "id": "RecordingEvent",
-            "properties": {
-                "deviceId": {
-                    "description": "The initiator of the latest event of the recording. It will be set for all user events (`type` is 100-199) and unset for all server events (`type` is 200-299).",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The type of event.",
-                    "enum": [
-                        "RECORDING_EVENT_UNSPECIFIED",
-                        "USER_ACTION",
-                        "STARTED_BY_USER",
-                        "STOPPED_BY_USER",
-                        "CANCELLED_BY_USER",
-                        "CANCELLED_INITIALIZATION_FAILED",
-                        "CANCELLED_INITIATOR_LEFT",
-                        "ACTIVE_ABOUT_TO_STOP_TOO_LONG",
-                        "STOPPED_TOO_LONG",
-                        "STOPPED_ALL_DEVICES_LEFT",
-                        "STOPPED_INTERNAL_FAILURES"
-                    ],
-                    "enumDescriptions": [
-                        "This is never used.",
-                        "Deprecated, use detailed user actions instead.",
-                        "Recording was started or is being started by a user.",
-                        "Recording was stopped by a user.",
-                        "Recording was cancelled by a user.",
-                        "Recording was cancelled by the server because of a failure during recording initialization.",
-                        "Recording was cancelled by the server because the recording initiator left the conference during initialization. When the initiator leaves after the recording is started, no event is triggered.",
-                        "Recording is about to be stopped by the server because the recording is about to reach the maximum duration.",
-                        "Recording was stopped because the recording reached the maximum duration.",
-                        "Recording was stopped because there were no devices left in the conference.",
-                        "Recording was stopped because of an internal error."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RecordingInfo": {
-            "description": "This message is deprecated, please use RecordingSessionInfo instead. Information about recording in the current conference.",
-            "id": "RecordingInfo",
-            "properties": {
-                "latestRecordingEvent": {
-                    "$ref": "RecordingEvent",
-                    "description": "The latest recording event. This can be used by clients to help explain what is going on, why recording stopped, etc. This will always be set if there is or was an active recording, which means there can be latest event when recording is INACTIVE."
-                },
-                "ownerDisplayName": {
-                    "description": "The display name of the owner of the recording output. Email notifications about uploaded recordings will also be sent to this owner.",
-                    "type": "string"
-                },
-                "producerDeviceId": {
-                    "description": "The device resource name of the producer device for the currently active recording. Note that, after the producer drops/leaves the conference, this field will be cleaned up by the server after a delay.",
-                    "type": "string"
-                },
-                "recordingApplicationType": {
-                    "description": "The application type of the current active recording. `RECORDING_APPLICATION_TYPE_UNSPECIFIED` if `recording_status` is inactive.",
-                    "enum": [
-                        "RECORDING_APPLICATION_TYPE_UNSPECIFIED",
-                        "RECORDING",
-                        "GLIVE_STREAM",
-                        "BROADCAST"
-                    ],
-                    "enumDescriptions": [
-                        "This is never used.",
-                        "A meeting recording saved to a video file in Google Drive.",
-                        "A *Google Live* managed stream.",
-                        "A meeting broadcast."
-                    ],
-                    "type": "string"
-                },
-                "recordingId": {
-                    "description": "An identifier for the current recording, if any. This is returned whenever recording_status is either `RECORDING_STARTING` or `RECORDING_STARTED`.",
-                    "type": "string"
-                },
-                "recordingStatus": {
-                    "description": "The current status of the recording. This can be used by clients to show a recording dot or similar to indicated to the user that a recording is taking place.",
-                    "enum": [
-                        "RECORDING_UNSPECIFIED",
-                        "RECORDING_INACTIVE",
-                        "RECORDING_STARTING",
-                        "RECORDING_STARTED"
-                    ],
-                    "enumDescriptions": [
-                        "This value is never used.",
-                        "The conference is not being recorded. This can mean either that no recording has been started, or that a previous recording has stopped.",
-                        "Recording is about to begin. The status will be updated to RECORDING_STARTED when the recording actually starts, which happens when all the backend plumbing is set up.",
-                        "The recording is started. Any media sent to the conference may be included in the resulting recording."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RecordingSessionInfo": {
-            "description": "Information about a recording session.",
-            "id": "RecordingSessionInfo",
-            "properties": {
-                "ownerEmail": {
-                    "description": "Input only. Deprecated field, should not be used.",
-                    "type": "string"
-                },
-                "recordingSessionId": {
-                    "description": "A unique server-generated ID for the recording session.",
-                    "type": "string"
-                },
-                "sessionStateInfo": {
-                    "$ref": "SessionStateInfo",
-                    "description": "Recording session's state information."
-                }
-            },
-            "type": "object"
-        },
-        "Reference": {
-            "description": "All fields in this proto are now columns in spanner see google3/storage/slice/production/gmail/user_data_tables.pi for documentation.",
-            "id": "Reference",
-            "properties": {
-                "blobId": {
-                    "type": "string"
-                },
-                "contentType": {
-                    "type": "string"
-                },
-                "hash": {
-                    "type": "string"
-                },
-                "key": {
-                    "description": "LINT.IfChange",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "LINT.ThenChange(//depot/google3/storage/slice/production/gmail/ user_data_tables.pi)",
-                    "type": "string"
-                },
-                "size": {
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "References": {
-            "id": "References",
-            "properties": {
-                "references": {
-                    "items": {
-                        "$ref": "Reference"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "RenameEvent": {
-            "id": "RenameEvent",
-            "properties": {
-                "newName": {
-                    "type": "string"
-                },
-                "originalName": {
-                    "type": "string"
-                }
-            },
+        "RemoveActivityResponse": {
+            "description": "Remove Logged Activity Response. will return an empty response for now. Will be revisited in later phases.",
+            "id": "RemoveActivityResponse",
+            "properties": {},
             "type": "object"
         },
         "RepositoryError": {
@@ -15401,20 +6780,6 @@
             },
             "type": "object"
         },
-        "RequestFileScope": {
-            "id": "RequestFileScope",
-            "properties": {
-                "itemId": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RequestFileScopeForActiveDocument": {
-            "id": "RequestFileScopeForActiveDocument",
-            "properties": {},
-            "type": "object"
-        },
         "RequestOptions": {
             "description": "Shared request options for all RPC methods.",
             "id": "RequestOptions",
@@ -15424,7 +6789,7 @@
                     "description": "Debug options of the request"
                 },
                 "languageCode": {
-                    "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. For translations. Set this field using the language set in browser or for the page. In the event that the user's language preference is known, set this field to the known user language. When specified, the documents in search results are biased towards the specified language. From Suggest API perspective, for 3p suggest this is used as a hint while making predictions to add language boosting.",
+                    "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. For translations. Set this field using the language set in browser or for the page. In the event that the user's language preference is known, set this field to the known user language. When specified, the documents in search results are biased towards the specified language. The Suggest API uses this field as a hint to make better third-party autocomplete predictions.",
                     "type": "string"
                 },
                 "searchApplicationId": {
@@ -15438,35 +6803,6 @@
             },
             "type": "object"
         },
-        "RequiredMessageFeaturesMetadata": {
-            "description": "A list of capabilities that are used in this message.",
-            "id": "RequiredMessageFeaturesMetadata",
-            "properties": {
-                "requiredFeatures": {
-                    "items": {
-                        "enum": [
-                            "REQUIRED_FEATURE_UNSPECIFIED",
-                            "REQUIRED_FEATURE_MESSAGE_QUOTING",
-                            "REQUIRED_FEATURE_TOMBSTONES_IN_DMS_AND_UFRS",
-                            "REQUIRED_FEATURE_CUSTOM_HYPERLINK",
-                            "REQUIRED_FEATURE_DRIVE_SMART_CHIP",
-                            "REQUIRED_FEATURE_LEGACY_TOPIC_START"
-                        ],
-                        "enumDescriptions": [
-                            "",
-                            "",
-                            "",
-                            "",
-                            "",
-                            ""
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "ResetSearchApplicationRequest": {
             "id": "ResetSearchApplicationRequest",
             "properties": {
@@ -15477,26 +6813,6 @@
             },
             "type": "object"
         },
-        "ResourceRoleProto": {
-            "description": "A type of sharing target that points to some resource's ACL. Used to refer to the set of Principals that have the given privilege ('role_id') for the given resource ('application_id', 'object_id', 'object_part'). The meaning of 'role_id' is interpreted only by implementations of AclRpcService and is usually dependent on 'application_id' All fields except object_part are required. If present, object_part must be non-empty.",
-            "id": "ResourceRoleProto",
-            "properties": {
-                "applicationId": {
-                    "type": "string"
-                },
-                "objectId": {
-                    "type": "string"
-                },
-                "objectPart": {
-                    "type": "string"
-                },
-                "roleId": {
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "ResponseDebugInfo": {
             "description": "Debugging information about the response.",
             "id": "ResponseDebugInfo",
@@ -15630,124 +6946,13 @@
             },
             "type": "object"
         },
-        "RoomRenameMetadata": {
-            "id": "RoomRenameMetadata",
+        "SafeHtmlProto": {
+            "description": "IMPORTANT: It is unsafe to accept this message from an untrusted source, since it's trivial for an attacker to forge serialized messages that don't fulfill the type's safety contract -- for example, it could contain attacker controlled script. A system which receives a SafeHtmlProto implicitly trusts the producer of the SafeHtmlProto. So, it's generally safe to return this message in RPC responses, but generally unsafe to accept it in RPC requests.",
+            "id": "SafeHtmlProto",
             "properties": {
-                "newName": {
+                "privateDoNotAccessOrElseSafeHtmlWrappedValue": {
+                    "description": "IMPORTANT: Never set or read this field, even from tests, it is private. See documentation at the top of .proto file for programming language packages with which to create or read this message.",
                     "type": "string"
-                },
-                "prevName": {
-                    "description": "NEXT_TAG: 3",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RoomUpdatedMetadata": {
-            "id": "RoomUpdatedMetadata",
-            "properties": {
-                "groupDetailsMetadata": {
-                    "$ref": "GroupDetailsUpdatedMetadata"
-                },
-                "groupLinkSharingEnabled": {
-                    "type": "boolean"
-                },
-                "initiator": {
-                    "$ref": "User",
-                    "description": "The user who initiated this room update. Complete member profiles, when ListTopicsRequest FetchOptions.USER is set. Otherwise, only the id will be filled in."
-                },
-                "initiatorType": {
-                    "description": "The type of the user who initiated this room update.",
-                    "enum": [
-                        "INITIATOR_TYPE_UNSPECIFIED",
-                        "INITIATOR_TYPE_END_USER",
-                        "INITIATOR_TYPE_ADMIN"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "name": {
-                    "description": "What was updated in the room.",
-                    "type": "string"
-                },
-                "renameMetadata": {
-                    "$ref": "RoomRenameMetadata"
-                },
-                "visibility": {
-                    "$ref": "AppsDynamiteSharedGroupVisibility",
-                    "description": "DEPRECATED: See GroupVisibility proto definition."
-                }
-            },
-            "type": "object"
-        },
-        "Roster": {
-            "description": "Roster profile information.",
-            "id": "Roster",
-            "properties": {
-                "avatarUrl": {
-                    "type": "string"
-                },
-                "id": {
-                    "$ref": "RosterId"
-                },
-                "isMembershipVisibleToCaller": {
-                    "description": "Whether caller has visibility into members of the roster.",
-                    "type": "boolean"
-                },
-                "membershipCount": {
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "rosterGaiaKey": {
-                    "description": "Roster gaia key, usually an email address. Set in looking up rosters response.",
-                    "type": "string"
-                },
-                "rosterState": {
-                    "description": "Roster deletion state - considered active unless set to deleted",
-                    "enum": [
-                        "ROSTER_STATE_UNKNOWN",
-                        "ROSTER_ACTIVE",
-                        "ROSTER_DELETED"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Roster is active",
-                        "Roster deleted"
-                    ],
-                    "type": "string"
-                },
-                "segmentedMembershipCounts": {
-                    "$ref": "AppsDynamiteSharedSegmentedMembershipCounts",
-                    "description": "Roster membership count. May contain counts based on member type and membership state."
-                }
-            },
-            "type": "object"
-        },
-        "RosterId": {
-            "description": "Primary key for Roster resource.",
-            "id": "RosterId",
-            "properties": {
-                "id": {
-                    "description": "Opaque, server-assigned ID of the Roster.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RpcOptions": {
-            "description": "Options for Triggers dispatched via RPC.",
-            "id": "RpcOptions",
-            "properties": {
-                "requestExtensions": {
-                    "$ref": "MessageSet",
-                    "description": "The RPC's request extensions (i.e. RPC::request_extensions(), a.k.a. the Stubby side channel) will be merged with the specified [request_extensions]. When Triggers are batched, the RPC's request extensions will be merged with all of the [request_extensions] of the Triggers in the batch. Note that merging of request extensions follows standard protocol buffer semantics; values of singular fields override previous values, and values of repeated fields are appended (In the case of Triggers, Triggers with later fire times will be merged after Triggers with earlier fire times in the same batch). It is not advised to specify extensions with repeated fields on batchable Triggers."
                 }
             },
             "type": "object"
@@ -15954,26 +7159,6 @@
             },
             "type": "object"
         },
-        "SearchLinkData": {
-            "description": "SearchLink metadata, for SEARCH_LINK segments. For a search link, the \"text\" field should contain the display text. This is currently not indexed.",
-            "id": "SearchLinkData",
-            "properties": {
-                "kgEntityConfidence": {
-                    "description": "For lightweight scoring in serving time.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "mid": {
-                    "description": "MID of the KG entity being linked.",
-                    "type": "string"
-                },
-                "queryBroadnessScore": {
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
         "SearchQualityMetadata": {
             "description": "Additional search quality metadata of the item.",
             "id": "SearchQualityMetadata",
@@ -16138,508 +7323,6 @@
             },
             "type": "object"
         },
-        "Section": {
-            "description": "Sections are separated by a line divider. They contain a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, AddOns have a narrow fixed width, so there is currently no need for layout properties (e.g. float).",
-            "id": "Section",
-            "properties": {
-                "collapsable": {
-                    "description": "Indicating whether this section is collapsable. If a section is collapsable, the description must be given.",
-                    "type": "boolean"
-                },
-                "description": {
-                    "description": "The header of the section, text formatted supported.",
-                    "type": "string"
-                },
-                "numUncollapsableWidgets": {
-                    "description": "The number of uncollapsable widgets. For example, when a section contains 5 widgets and the num_uncollapsable_widget are set to be 2, The first 2 widgets will always shown and the last 3 is collapsed as default. Only when collapsable is set to be true, the num_uncollapsable_widget will be taken into account.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "widgets": {
-                    "description": "A section must contain at least 1 widget.",
-                    "items": {
-                        "$ref": "WidgetMarkup"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Segment": {
-            "id": "Segment",
-            "properties": {
-                "formatting": {
-                    "$ref": "Formatting",
-                    "description": "Formatting to be applied when rendering the Segment. For all segment types, this is the standard way of representing that the Segment should be rendered in bold, italics, etc."
-                },
-                "hashtagData": {
-                    "$ref": "HashtagData",
-                    "description": "For HASHTAG type:"
-                },
-                "linkData": {
-                    "$ref": "LinkData",
-                    "description": "Type-specific metadata. At most one of these should be populated, and the one that is populated should correspond to the type of the Segment. For LINK type:"
-                },
-                "searchLinkData": {
-                    "$ref": "SearchLinkData",
-                    "description": "For SEARCH_LINK type:"
-                },
-                "text": {
-                    "description": "Text content of the Segment. As a general rule, this field should contain the actual text that should be rendered in the UI. Thus, for a hashtag, it should be \"#Foo\", and for a link, it should be the display text. Clients that do not understand a particular segment type may use this text, along with the Formatting info below, as a fallback for display. The field is not required -- if all relevant information is carried in other metadata fields and there is no need for a fallback, or it is not practical for a fallback to be provided for any other reason, the field may be left blank. A standard example would be a user reference being transmitted between server layers, where a gaia-ID representation may be sufficient and there is no need for a textual fallback. In such a case, it would be valid and useful - though not required - for servers to compute and populate a fallback on the serving path.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Type of Segment.",
-                    "enum": [
-                        "TEXT",
-                        "LINE_BREAK",
-                        "LINK",
-                        "USER_MENTION",
-                        "ALL_USER_MENTION",
-                        "HASHTAG",
-                        "SEARCH_LINK"
-                    ],
-                    "enumDescriptions": [
-                        "A TEXT segment represents plain-text subject to particular formatting constraints (as represented in the \"formatting\" field of the Segment).",
-                        "A LINE_BREAK segment is simply a placeholder to represent a line break between other segments. The \"text\" variable may be set to a newline as a fallback, but clients that understand this segment type should simply insert a line break without needing to reference any fields.",
-                        "A LINK segment represents a link to a web entity. The \"text\" field should be used for anchor text. Additional link data should be put in the link_data protobuf.",
-                        "A USER_MENTION segment represents a reference to a (possibly non-Gaia, possibly off-network) user. The \"text\" field may be populated as a fallback, but information identifying the user should be contained in the user_mention_data protobuf. (The set of fields that are populated in user_mention_data may differ depending on the context in which the segment is viewed, but the interpretation of the fields is uniform. See comments over UserMentionData).",
-                        "An ALL_USER_MENTION segment represents a reference to all users in the context, that is, the conversation, discussion, or other context containing the segment. For example, an ALL_USER_MENTION segment (\"@all\") can be useful to ping all participants in a conversation if the notification setting of the conversation is not set to ping on normal messages. An ALL_USER_MENTION should be treated as a USER_MENTION for all users who receives the segment.",
-                        "A HASHTAG segment represents a structured reference to a topic. The \"text\" field should represent display text (e.g. \"#Google\"), and additional metadata should be put in the Segment's hashtag_data field.",
-                        "A SEARCH_LINK segment respresents a link to search results for a KG entity. The \"text\" field should represent the part of the comment where the KG entity is extracted from, and additional metadata of the entity should be put in the Segment's search_link_data field."
-                    ],
-                    "type": "string"
-                },
-                "userMentionData": {
-                    "$ref": "UserMentionData",
-                    "description": "For USER_MENTION type:"
-                }
-            },
-            "type": "object"
-        },
-        "SelectionControl": {
-            "id": "SelectionControl",
-            "properties": {
-                "items": {
-                    "description": "For radio button, at most one of the items will be selected.",
-                    "items": {
-                        "$ref": "SelectionItem"
-                    },
-                    "type": "array"
-                },
-                "label": {
-                    "description": "Label used to be displayed ahead of the selection control. It is optional.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the text field which is will be used in FormInput.",
-                    "type": "string"
-                },
-                "onChange": {
-                    "$ref": "FormAction",
-                    "description": "If specified, form is submitted when selection changed. If not specified, developer will need to specify a separate button."
-                },
-                "type": {
-                    "enum": [
-                        "CHECK_BOX",
-                        "RADIO_BUTTON",
-                        "SWITCH",
-                        "DROPDOWN"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SelectionItem": {
-            "id": "SelectionItem",
-            "properties": {
-                "selected": {
-                    "description": "If more than one items are selected for RADIO_BUTTON and DROPDOWN, the first selected item is treated as sElected and the after ones are all ignored.",
-                    "type": "boolean"
-                },
-                "text": {
-                    "description": "The text to be displayed.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value associated with this item which will be sent back to app scripts. Client should use as a form input value.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SessionContext": {
-            "id": "SessionContext",
-            "properties": {
-                "authTime": {
-                    "description": "Time at which this activity's session was authenticated, in seconds since the epoch.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "delegateUserId": {
-                    "description": "Gaia ID of the authenticated user when delegate access is active. In such sessions the main gaia ID is that of the delegator, i.e. the account being accessed.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "dusi": {
-                    "description": "Device User Session ID, see go/dusi.",
-                    "type": "string"
-                },
-                "imapSessionContext": {
-                    "$ref": "ImapSessionContext",
-                    "description": "Imap session context for Bond/Gmail integration"
-                },
-                "oauthLoginId": {
-                    "description": "OAuth login ID.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "oauthProjectId": {
-                    "description": "The devconsole project ID of the developer who authenticated with OAuth.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SessionEvent": {
-            "description": "A session event is something that happens to the streaming session in a conference.",
-            "id": "SessionEvent",
-            "properties": {
-                "deviceId": {
-                    "description": "The initiator of the latest event of the streaming session. It will be set for all user events (`type` is 100-199) and unset for all server events(`type` is 200-299).",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The type of event.",
-                    "enum": [
-                        "EVENT_UNSPECIFIED",
-                        "STARTED_BY_USER",
-                        "STOPPED_BY_USER",
-                        "CANCELLED_BY_USER",
-                        "CANCELLED_INITIALIZATION_FAILED",
-                        "CANCELLED_INITIATOR_LEFT",
-                        "ACTIVE_ABOUT_TO_STOP_TOO_LONG",
-                        "STOPPED_TOO_LONG",
-                        "STOPPED_ALL_DEVICES_LEFT",
-                        "STOPPED_INTERNAL_FAILURES"
-                    ],
-                    "enumDescriptions": [
-                        "This is never used.",
-                        "Streaming session was started or is being started by a user.",
-                        "Streaming session was stopped by a user.",
-                        "Streaming session was cancelled by a user.",
-                        "Streaming session was cancelled by the server because of a failure during session initialization.",
-                        "Streaming session was cancelled by the server because the session initiator left the conference during initialization. When the initiator leaves after the session is started, no event is triggered.",
-                        "Streaming session is about to be stopped by the server because the session is about to reach the maximum duration.",
-                        "Streaming session was stopped because the session reached the maximum duration.",
-                        "Streaming session was stopped because there were no devices left in the conference.",
-                        "Streaming session was stopped because of an internal error."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SessionStateInfo": {
-            "description": "Information about the state of a (recording, broadcast, transcription...) session in a conference.",
-            "id": "SessionStateInfo",
-            "properties": {
-                "ackInfo": {
-                    "$ref": "AckInfo",
-                    "description": "Output only. The ack info of the session.",
-                    "readOnly": true
-                },
-                "languageConfig": {
-                    "$ref": "LanguageConfig",
-                    "description": "Immutable. The language configuration used by this session. When empty, captions will be disabled. It's a required field for transcription sessions."
-                },
-                "lastActorDeviceId": {
-                    "description": "Output only. The device id of the actor is set if the current state is a result of a user action, is empty otherwise.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "maxEndTime": {
-                    "description": "Output only. The max end time of the session, at this time the session will be force stopped/terminated. Clients are expected to use this timestamp to warn users about the force stop.",
-                    "format": "google-datetime",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "sessionState": {
-                    "description": "State of the session.",
-                    "enum": [
-                        "SESSION_STATE_UNSPECIFIED",
-                        "STARTING",
-                        "ACTIVE",
-                        "STOPPED"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified session state.",
-                        "The session is starting.",
-                        "The session is active/ongoing.",
-                        "The session has stopped."
-                    ],
-                    "type": "string"
-                },
-                "sessionStopReason": {
-                    "description": "Output only. The reason the session was transitioned to STOPPED state.",
-                    "enum": [
-                        "SESSION_STOP_REASON_UNSPECIFIED",
-                        "USER_ACTION",
-                        "STOPPED_INITIALIZATION_FAILED",
-                        "STOPPED_TOO_LONG",
-                        "STOPPED_ALL_DEVICES_LEFT",
-                        "STOPPED_INTERNAL_FAILURES",
-                        "STOPPED_YOU_TUBE_LIVE_EVENT_ENDED"
-                    ],
-                    "enumDescriptions": [
-                        "Session stop reason unspecified.",
-                        "Stopped by user action.",
-                        "Stopped by the server because of an initialization failure.",
-                        "Stopped because the session reached the maximum duration.",
-                        "Stopped because there were no devices left in the conference.",
-                        "Stopped because of an internal error.",
-                        "Stopped because the broadcast event ended on YouTube."
-                    ],
-                    "readOnly": true,
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Settings": {
-            "description": "Settings of a meeting space that can be edited by users with corresponding manage privilege. These settings are always populated in responses.",
-            "id": "Settings",
-            "properties": {
-                "accessLock": {
-                    "description": "The access lock of the meeting space that lets hosts control who can join the meeting.",
-                    "type": "boolean"
-                },
-                "accessType": {
-                    "description": "The access type of the meeting space.",
-                    "enum": [
-                        "ACCESS_TYPE_UNSPECIFIED",
-                        "ACCESS_TYPE_OPEN",
-                        "ACCESS_TYPE_TRUSTED",
-                        "ACCESS_TYPE_RESTRICTED",
-                        "ACCESS_TYPE_CLOSED"
-                    ],
-                    "enumDescriptions": [
-                        "Default value. This value is unused.",
-                        "Anyone with meeting join information (url, phone access...) can join, no knocking required. (Subject to organization policies)",
-                        "Members of the Host's organization, invited external users, and dial-in users can join without knocking, everyone else must knock. (Subject to organization policies)",
-                        "Only participants invited by a host can automatically join, everyone else must knock and be admitted. (Subject to organization policies) Participants cannot dial out from the meeting. And only hosts can accept knocks.",
-                        "Only participants invited by a host can join. Knocking is not allowed, dial in and dial out are also disabled."
-                    ],
-                    "type": "string"
-                },
-                "allowJoiningBeforeHost": {
-                    "description": "Whether users can join before host in the conferences of this meeting space.",
-                    "type": "boolean"
-                },
-                "attendanceReportEnabled": {
-                    "description": "Whether attendance report is enabled for the meeting space.",
-                    "type": "boolean"
-                },
-                "chatLock": {
-                    "description": "The chat lock of the meeting space that lets owner control whether the participants can send chat messages.",
-                    "type": "boolean"
-                },
-                "coActivityLock": {
-                    "description": "The co-activity lock of the meeting space that lets owner control whether the participants can start/stop or update the state of co-activity.",
-                    "type": "boolean"
-                },
-                "cohostArtifactSharingEnabled": {
-                    "description": "Whether meeting artifacts will be shared with cohosts.",
-                    "type": "boolean"
-                },
-                "cseEnabled": {
-                    "description": "Whether Client-side Encryption is enabled for the meeting space.",
-                    "type": "boolean"
-                },
-                "defaultAsViewer": {
-                    "description": "Whether the default role is viewer or not.",
-                    "type": "boolean"
-                },
-                "moderationEnabled": {
-                    "description": "Indicates whether the meeting space is moderated.",
-                    "type": "boolean"
-                },
-                "presentLock": {
-                    "description": "The present lock of the meeting space that lets owner control whether the participants can present their screen.",
-                    "type": "boolean"
-                },
-                "reactionsLock": {
-                    "description": "The reactions lock of the meeting space that lets owner control whether the participants can send reactions.",
-                    "type": "boolean"
-                }
-            },
-            "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"
-        },
-        "SheetsClientActionMarkup": {
-            "id": "SheetsClientActionMarkup",
-            "properties": {
-                "customFunctionReturnValueMarkup": {
-                    "$ref": "CustomFunctionReturnValueMarkup"
-                }
-            },
-            "type": "object"
-        },
-        "SigningKeyPossessorProto": {
-            "description": "Represents a principal who possesses a signing key corresponding to the verification key or keyset described here.",
-            "id": "SigningKeyPossessorProto",
-            "properties": {
-                "keymasterKeyType": {
-                    "description": "This value must be from the KeyMetadata.Type enum in keymaster.proto.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "serializedVerificationKey": {
-                    "description": "The actual verification key bytes corresponding to the above type.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "serializedVerificationKeyset": {
-                    "description": "The binary serialized Keymaster SerializedReader of a public keyset. The keyset must contain exactly one key. N.B.: If this field is populated, serialized_verification_key should be set to the empty string and keymaster_key_type should be set to zero.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SimpleSecretHolderProto": {
-            "description": "Represents a principal which possesses a particular, presumably secret, string. Useful for things like \"auth keys,\" used for anonymous sharing. Since representing this principal with the actual secret included reveals the secret, it's best if the requisite condition is enforced in some other way, for example via Keystore wrapping attributes (Keystore will unwrap only if the specified secret, aka \"attribute\", is presented). All that's stored here is an identifying label.",
-            "id": "SimpleSecretHolderProto",
-            "properties": {
-                "label": {
-                    "$ref": "SimpleSecretLabelProto",
-                    "description": "A descriptive label to help identify a relevant ACL entry or otherwise disambiguate this instance."
-                }
-            },
-            "type": "object"
-        },
-        "SimpleSecretLabelProto": {
-            "description": "SimpleSecretProto (in authenticator.proto) and SimpleSecretHolderProto (below) share the notion of a \"label\", which identifies a particular secret without (hopefully) revealing the secret. Note that a SimpleSecretLabel only disambiguates between secrets used to get access to some particular object. Two different secrets that apply to two different objects could have the same label. For example, in the common sharing model, each object has no more than one \"auth key\". Therefore, the label for an auth key simply has type = AUTH_KEY with no additional information. In theory, we could add some sort of resource ID to SimpleSecretLabel to make it more explicit. However, in practice, this is never really needed. A SimpleSecret for one object is never used to authorize a request on some other object, so there is no ambiguity. Also, since SimpleSecrets must obviously be unguessable, there is no risk that a SimpleSecret intended for one object will accidentally grant access to another.",
-            "id": "SimpleSecretLabelProto",
-            "properties": {
-                "capabilityId": {
-                    "description": "***DEPRECATED (3-Oct-2011) *** This field should be deleted when code stops using CAP_TOKEN labels. Used when type = CAP_TOKEN. When a CAP_TOKEN label appears in a SimpleSecretHolder Principal, |capability_id| must be filled in to identify one of the capabilities on the ACL. When a CAP_TOKEN label appears in a SimpleSecret Authenticator, it is NOT necessary to fill in |capability_id| -- ACL Service will find the ID by searching all capabilities on the ACL for one associated with the token given by the SimpleSecret's secret data. If |capability_id| is specified, though, then the Authenticator will only be accepted if it actually matches that particular token ID.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "genericLabel": {
-                    "description": "Used when type = GENERIC_SECRET",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "inviteId": {
-                    "description": "Used when type == INVITE.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "This is optional because required enums cannot be extended.",
-                    "enum": [
-                        "INVALID",
-                        "AUTH_KEY",
-                        "INVITE",
-                        "GENERIC_SECRET",
-                        "CAP_TOKEN",
-                        "REKE"
-                    ],
-                    "enumDescriptions": [
-                        "Used as a default value.",
-                        "The singleton auth key for a common-sharing ACL. No other fields of SimpleSecretLabelProto need to be filled in, since there is only one of these per ACL. The corresponding secret is the auth key encoded in 64-bit big-endian.",
-                        "A common-sharing invite token. |invite_id| (below) must be set to identify the invite. The corresponding secret is the SecretMaterial, as defined by InviteToken.SecretMaterial in acl.proto, encoded in 64-bit big-endian. If there is no SecretMaterial, the secret should be omitted; in this case the invite ID itself is the secret, which is less secure.",
-                        "A generic secret value. Do not use this if any more specific type is appropriate.",
-                        "***DEPRECATED (3-Oct-2011)*** Use the new CapTokenProto and CapTokenHolderProto instead. A capability token. The corresponding secret is an arbitrary-length random byte string (recommended: 128 bits). |capability_id| may be filled in (see below). See CapTokenMetadata in acl.proto.",
-                        "Identifies a principal that can perform a successful REKE handshake. The holder is not authenticated by presenting a SimpleSecretProto, but rather by knowing either the REKE resumption ticket secret or the private key corresponding to a public key specified outside the PrincipalProto. For more information, see: http://goto.google.com/loas2cert"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SlashCommandMetadata": {
-            "description": "Annotation metadata for slash commands (/).",
-            "id": "SlashCommandMetadata",
-            "properties": {
-                "argumentsHint": {
-                    "description": "Hint string for the arguments expected by the slash command.",
-                    "type": "string"
-                },
-                "commandId": {
-                    "description": "Unique id for the slash command.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "commandName": {
-                    "description": "Name of the slash command.",
-                    "type": "string"
-                },
-                "id": {
-                    "$ref": "UserId",
-                    "description": "ID of the bot which owns the slash command."
-                },
-                "triggersDialog": {
-                    "description": "Whether or not this slash command should trigger a dialog.",
-                    "type": "boolean"
-                },
-                "type": {
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "ADD",
-                        "INVOKE",
-                        "FAILED_TO_ADD"
-                    ],
-                    "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
-                        "If a bot is added by a Slash Command, it means the bot was invoked by the user but hasn't yet been added to the group. Attaching an ADD annotation both add and invoke the bot.",
-                        "",
-                        "Server-generated slash command metadata, for clients to strikethrough."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Snippet": {
             "description": "Snippet of the search result, which summarizes the content of the resulting page.",
             "id": "Snippet",
@@ -16658,35 +7341,6 @@
             },
             "type": "object"
         },
-        "SocialCommonAttachmentAttachment": {
-            "description": "An Attachment represents a linked entity associated with a piece of social content. This may be a 1st-party or 3rd-party entity. In the Papyrus context, an Attachment is part of a Cent, and sits alongside the main content of the cent, which is represented as a sequence of Segments. Right now an Attachment is just a wrapper around an Embed, but we provide the extra layer of abstraction since, as Embeds move to separate storage in Briefcase, we may want to add additional fields that are not part of the Embed proper, but that (for example) relate to the usage of the linked content within the particular post/cent.",
-            "id": "SocialCommonAttachmentAttachment",
-            "properties": {
-                "embedItem": {
-                    "$ref": "EmbedClientItem",
-                    "description": "An embed represents an external entity. See go/es-embeds."
-                },
-                "id": {
-                    "description": "An id to uniquely identify an attachment when several attachments are in a collection.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SocialGraphNodeProto": {
-            "description": "Represents a user pseudonym. Pseudonyms are linked accounts on Google and third-party services (e.g. YouTube or Twitter) and are described by a Social Graph Node.",
-            "id": "SocialGraphNodeProto",
-            "properties": {
-                "sgnDomain": {
-                    "description": "The fields from ccc/socialgraph/socialgraphnode.proto:SgnNode that uniquely identify a social graph node. The 'ident' field is not included here because its value can be changed.",
-                    "type": "string"
-                },
-                "sgnPk": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "SortOptions": {
             "id": "SortOptions",
             "properties": {
@@ -16782,29 +7436,6 @@
             },
             "type": "object"
         },
-        "SourceMessageInfo": {
-            "id": "SourceMessageInfo",
-            "properties": {
-                "messageId": {
-                    "$ref": "MessageId",
-                    "description": "Source message ID"
-                },
-                "messageType": {
-                    "enum": [
-                        "SOURCE_MESSAGE_TYPE_UNDEFINED",
-                        "ROOT_MESSAGE",
-                        "INLINE_REPLY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "SourceResultCount": {
             "description": "Per source result count information.",
             "id": "SourceResultCount",
@@ -16851,39 +7482,29 @@
             },
             "type": "object"
         },
-        "SpaceId": {
-            "description": "Primary key for Space resource.",
-            "id": "SpaceId",
-            "properties": {
-                "spaceId": {
-                    "description": "Unique, immutable ID of the Space",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "SpellResult": {
             "id": "SpellResult",
             "properties": {
                 "suggestedQuery": {
                     "description": "The suggested spelling of the query.",
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SquareProto": {
-            "description": "Represents the set of members (of a given type) in a Google+ Square (see http://go/squares). A Square with default member_type is currently (1/2012) identical to the GaiaGroup with the same ID, but that is expected to change soon (see http://go/superglue). Support for this principal type is currently (1/2012) incomplete -- e.g., Keystore does not support it yet (see b/5703421).",
-            "id": "SquareProto",
-            "properties": {
-                "memberType": {
-                    "description": "The type of Square members to consider, e.g. \"all members\" vs. \"owners\" vs. \"admins\". These are defined by legacy_relation_id values in social.graph.storage.EdgeTypeEnum.EdgeType enum options in social/graph/storage/proto/id.proto. See square.pb (defined in production/config/cdd/socialgraph/mixer_config/prod/node_type_config) for all valid edge types associated with square. Currently required.",
-                    "format": "int32",
-                    "type": "integer"
                 },
-                "squareId": {
-                    "description": "Currently required.",
-                    "format": "int64",
+                "suggestedQueryHtml": {
+                    "$ref": "SafeHtmlProto",
+                    "description": "The sanitized HTML representing the spell corrected query that can be used in the UI. This usually has language-specific tags to mark up parts of the query that are spell checked."
+                },
+                "suggestionType": {
+                    "description": "Suggestion triggered for the current query.",
+                    "enum": [
+                        "SUGGESTION_TYPE_UNSPECIFIED",
+                        "NON_EMPTY_RESULTS_SPELL_SUGGESTION",
+                        "ZERO_RESULTS_FULL_PAGE_REPLACEMENT"
+                    ],
+                    "enumDescriptions": [
+                        "Default spell check type",
+                        "Spell suggestion without any results changed. The results are still shown for the original query (which has non zero / results) with a suggestion for spelling that would have results.",
+                        "Spell suggestion triggered when original query has no results. When the original query has no results, and spell suggestion has results we trigger results for the spell corrected query."
+                    ],
                     "type": "string"
                 }
             },
@@ -16931,101 +7552,6 @@
             },
             "type": "object"
         },
-        "StoredParticipantId": {
-            "id": "StoredParticipantId",
-            "properties": {
-                "gaiaId": {
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StreamViewerStats": {
-            "description": "Information about viewers of the stream.",
-            "id": "StreamViewerStats",
-            "properties": {
-                "estimatedViewerCount": {
-                    "description": "The estimate of the current viewer count.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StreamingSessionInfo": {
-            "description": "Information about a streaming session in conference.",
-            "id": "StreamingSessionInfo",
-            "properties": {
-                "applicationType": {
-                    "description": "The application type of the current streaming session.",
-                    "enum": [
-                        "RECORDING_APPLICATION_TYPE_UNSPECIFIED",
-                        "RECORDING",
-                        "GLIVE_STREAM",
-                        "BROADCAST"
-                    ],
-                    "enumDescriptions": [
-                        "This is never used.",
-                        "A meeting recording saved to a video file in Google Drive.",
-                        "A *Google Live* managed stream.",
-                        "A meeting broadcast."
-                    ],
-                    "type": "string"
-                },
-                "latestSessionEvent": {
-                    "$ref": "SessionEvent",
-                    "description": "The latest streaming session event. This can be used by clients to help explain what is going on, why recording stopped, etc. This will always be set to a valid event and consistent with the status. It can be set when current session is inactive to indicate latest event that makes current session to become inactive."
-                },
-                "ownerDisplayName": {
-                    "description": "The display name of the owner of the recording output. It's only set when there will be uploaded recordings. Currently, it's only set when application type is RECORDING or GLIVE_STREAM.",
-                    "type": "string"
-                },
-                "sessionId": {
-                    "description": "This is the REST name and unique identifier of this streaming session and has the form `spaces//recordings/` This is returned whenever status is either `STARTING` or `STARTED`.",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "The current status of this streaming session. This can be used by clients to show session status indicator and/or notification.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "INACTIVE",
-                        "STARTING",
-                        "LIVE"
-                    ],
-                    "enumDescriptions": [
-                        "This value is never used.",
-                        "The streaming session is inactive. This means either it's not started yet or it's already stopped.",
-                        "The streaming session is about to begin. The status will be updated to LIVE when the streaming session actually starts, which happens when all the backend plumbing is set up.",
-                        "The streaming session is live. Any media sent to the conference may be included in the resulting recording/broadcast."
-                    ],
-                    "type": "string"
-                },
-                "trainingEnabled": {
-                    "description": "When true, this recording may be used for training new transcription models.",
-                    "type": "boolean"
-                },
-                "viewerAccessPolicy": {
-                    "description": "The policy that controls who can view the broadcast. This setting applies for broadcast session.",
-                    "enum": [
-                        "BROADCASTING_ACCESS_POLICY_UNSPECIFIED",
-                        "ORGANIZATION",
-                        "PUBLIC"
-                    ],
-                    "enumDescriptions": [
-                        "Used only when broadcast is not enabled, or an unknown enum value is used.",
-                        "Only authenticated Google accounts belonging to the same organization as the meeting organizer can access the broadcast.",
-                        "Anyone with the broadcast view URL can access the broadcast."
-                    ],
-                    "type": "string"
-                },
-                "viewerStats": {
-                    "$ref": "StreamViewerStats",
-                    "description": "Contains information about viewers of the livestream. It is only set when application type is BROADCAST."
-                }
-            },
-            "type": "object"
-        },
         "StructuredDataObject": {
             "description": "A structured data object consisting of named properties.",
             "id": "StructuredDataObject",
@@ -17110,187 +7636,6 @@
             },
             "type": "object"
         },
-        "SupportUrls": {
-            "description": "Urls with additional bot related information.",
-            "id": "SupportUrls",
-            "properties": {
-                "adminConfigUrl": {
-                    "description": "Link to the admin configuration webpage for the bot. Configured by Pantheon, may be empty.",
-                    "type": "string"
-                },
-                "deletionPolicyUrl": {
-                    "description": "Link to the deletion policy webpage for the bot. Configured by Pantheon, may be empty.",
-                    "type": "string"
-                },
-                "gwmUrl": {
-                    "description": "Link to GWM page of the app. May be empty.",
-                    "type": "string"
-                },
-                "privacyPolicyUrl": {
-                    "description": "Link to the privacy policy webpage for the bot. May be empty.",
-                    "type": "string"
-                },
-                "setupUrl": {
-                    "description": "Link to the setup webpage for the bot. Configured by Pantheon, may be empty.",
-                    "type": "string"
-                },
-                "supportUrl": {
-                    "description": "Link to the support webpage for the developer of the bot. May be empty.",
-                    "type": "string"
-                },
-                "tosUrl": {
-                    "description": "Link to the terms of service webpage for the bot. May be empty.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SwitchWidget": {
-            "id": "SwitchWidget",
-            "properties": {
-                "controlType": {
-                    "enum": [
-                        "UNSPECIFIED",
-                        "SWITCH",
-                        "CHECKBOX"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the switch widget which is will be used in FormInput.",
-                    "type": "string"
-                },
-                "onChange": {
-                    "$ref": "FormAction"
-                },
-                "selected": {
-                    "type": "boolean"
-                },
-                "value": {
-                    "description": "The value is what is passed back in apps script callback.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TaskActionMarkup": {
-            "id": "TaskActionMarkup",
-            "properties": {
-                "reloadTasks": {
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "TextButton": {
-            "id": "TextButton",
-            "properties": {
-                "altText": {
-                    "description": "The alternative text used for accessibility Next field number: 7.",
-                    "type": "string"
-                },
-                "backgroundColor": {
-                    "description": "Optional color of the button's background in RAISE mode. The default is the secondary color from addon's manifest.",
-                    "type": "string"
-                },
-                "disabled": {
-                    "type": "boolean"
-                },
-                "onClick": {
-                    "$ref": "OnClick"
-                },
-                "style": {
-                    "enum": [
-                        "UNSPECIFIED",
-                        "TEXT",
-                        "FILLED"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Simple text button with ripple touch feedback.",
-                        "Button with solid background."
-                    ],
-                    "type": "string"
-                },
-                "text": {
-                    "description": "Text color can be set via HTML markup.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TextField": {
-            "id": "TextField",
-            "properties": {
-                "autoComplete": {
-                    "$ref": "AutoComplete",
-                    "description": "The initial set of auto complete items without any user input."
-                },
-                "autoCompleteCallback": {
-                    "$ref": "FormAction",
-                    "description": "The refresh function which returns AutoComplete based on the user's input text. If the callback is not specified, auto complete will be purely done in client side based on the auto_complete items."
-                },
-                "autoCompleteMultipleSelections": {
-                    "description": "When set to true, a user can input multiple auto-complet items.",
-                    "type": "boolean"
-                },
-                "hintText": {
-                    "type": "string"
-                },
-                "label": {
-                    "description": "One of label or hint_text is required to be specified by the developers.",
-                    "type": "string"
-                },
-                "maxLines": {
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "name": {
-                    "description": "The name of the text field which is will be used in FormInput.",
-                    "type": "string"
-                },
-                "onChange": {
-                    "$ref": "FormAction"
-                },
-                "type": {
-                    "enum": [
-                        "SINGLE_LINE",
-                        "MULTIPLE_LINE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The default value when no input from user.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TextKeyValue": {
-            "description": "This is deprecated and please use KeyValue.",
-            "id": "TextKeyValue",
-            "properties": {
-                "key": {
-                    "type": "string"
-                },
-                "onClick": {
-                    "$ref": "OnClick"
-                },
-                "text": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "TextOperatorOptions": {
             "description": "Used to provide a search operator for text properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched.",
             "id": "TextOperatorOptions",
@@ -17306,15 +7651,6 @@
             },
             "type": "object"
         },
-        "TextParagraph": {
-            "id": "TextParagraph",
-            "properties": {
-                "text": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "TextPropertyOptions": {
             "description": "The options for text properties.",
             "id": "TextPropertyOptions",
@@ -17344,75 +7680,33 @@
             },
             "type": "object"
         },
-        "ThreadKeySet": {
-            "description": "The ThreadKey was set on some (subset of the) messages in this thread.",
-            "id": "ThreadKeySet",
+        "ThirdPartyGenericCard": {
+            "id": "ThirdPartyGenericCard",
             "properties": {
-                "messageKeys": {
-                    "description": "Messages on which the thread_key was changed.",
-                    "items": {
-                        "$ref": "MultiKey"
-                    },
-                    "type": "array"
-                },
-                "newThreadKey": {
-                    "$ref": "MultiKey",
-                    "description": "The new thread_key for this thread"
-                }
-            },
-            "type": "object"
-        },
-        "ThreadUpdate": {
-            "description": "HistoryRecord for changes associated with a thread, namely: MESSAGE_ADDED MESSAGE_DELETED LABEL_ADDED LABEL_REMOVED ATTRIBUTE_SET ATTRIBUTE_REMOVED THREAD_KEY_SET All label_ids refer to the (unchanging) value as defined by the Label.id field in labels.proto. In particular, it is *not* the canonical_name.",
-            "id": "ThreadUpdate",
-            "properties": {
-                "attributeRemoved": {
-                    "$ref": "AttributeRemoved"
-                },
-                "attributeSet": {
-                    "$ref": "AttributeSet"
-                },
-                "labelAdded": {
-                    "$ref": "LabelAdded"
-                },
-                "labelRemoved": {
-                    "$ref": "LabelRemoved"
-                },
-                "lastHistoryRecordId": {
-                    "description": "Indicates the record id of the last operation that modified this thread.",
-                    "format": "uint64",
+                "cardId": {
+                    "description": "Unique identifier for the card.",
                     "type": "string"
                 },
-                "messageAdded": {
-                    "$ref": "MessageAdded"
-                },
-                "messageDeleted": {
-                    "$ref": "MessageDeleted"
-                },
-                "originalThreadKey": {
-                    "$ref": "MultiKey",
-                    "description": "The first non-empty thread-key on any message in the thread (including deleted messages). This field has been introduced to maintain backward compatibility for clients that are not subthread aware."
-                },
-                "preState": {
-                    "description": "The PreStates of all messages before the transaction. These are suppressed if the client requested that prestates not be included in the output of the GetHistoryRequest.",
-                    "items": {
-                        "$ref": "PreState"
-                    },
-                    "type": "array"
-                },
-                "threadKey": {
-                    "$ref": "MultiKey",
-                    "description": "Affected thread"
-                },
-                "threadKeySet": {
-                    "$ref": "ThreadKeySet"
-                },
-                "threadLocator": {
-                    "description": "Thread PLID",
+                "category": {
+                    "description": "Category that the card belongs to.",
                     "type": "string"
                 },
-                "topicStateUpdate": {
-                    "$ref": "TopicStateUpdate"
+                "content": {
+                    "$ref": "Content",
+                    "description": "[Required] Card content."
+                },
+                "context": {
+                    "$ref": "Context",
+                    "description": "[Required] Context where the card should be triggered."
+                },
+                "isDismissible": {
+                    "description": "Whether the card can be dismissed.",
+                    "type": "boolean"
+                },
+                "priority": {
+                    "description": "Priority of the card, where 0 is the highest priority.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -17461,375 +7755,6 @@
             },
             "type": "object"
         },
-        "TombstoneMetadata": {
-            "description": "Tombstoning is the act of leaving a contextual trace when deleting a message. See more: go/tombstone-prd, go/hub-dynamite-tombstones-server-design-v2.",
-            "id": "TombstoneMetadata",
-            "properties": {
-                "tombstoneType": {
-                    "description": "Indicates the type of Tombstone.",
-                    "enum": [
-                        "TOMBSTONE_UNSPECIFIED",
-                        "CREATOR",
-                        "ROOM_OWNER",
-                        "ADMIN",
-                        "APP_MESSAGE_EXPIRY",
-                        "CREATOR_VIA_APP",
-                        "ROOM_OWNER_VIA_APP"
-                    ],
-                    "enumDescriptions": [
-                        "This should not be used.",
-                        "User deleted their own message.",
-                        "The space owner deleted a message in their space.",
-                        "The customer admin deleted a message in a space or DM owned by the customer. (go/chat-customer-owned-data)",
-                        "App scheduled deletion of their own message. See go/bme-dd.",
-                        "User deleted their own message via an app. See go/chat-api-delete-message.",
-                        "The space owner deleted a message in their space via an app. See go/chat-api-delete-message."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Toolbar": {
-            "description": "The Toolbar markup has been deprecated. The information is now specified in the manifest.",
-            "id": "Toolbar",
-            "properties": {
-                "color": {
-                    "description": "Background color of the toolbar in RBG hex representation.",
-                    "type": "string"
-                },
-                "iconUrl": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TopicId": {
-            "id": "TopicId",
-            "properties": {
-                "groupId": {
-                    "$ref": "GroupId",
-                    "description": "The Space or DM that the topic belongs to."
-                },
-                "topicId": {
-                    "description": "Opaque, server-assigned ID of the Topic. While this ID is guaranteed to be unique within the Space, it's not guaranteed to be globally unique. Internal usage: this field can be empty in the following cases: 1. To create the first message in a topic. 2. To list last N messages of a Space (regardless of topic).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TopicState": {
-            "description": "State of an topic thread as maintained within Tingle.",
-            "id": "TopicState",
-            "properties": {
-                "labelIdMessageCount": {
-                    "additionalProperties": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "description": "Map of label => count of topic constituent messages with label These only contain counts of labels that are relevant for topic normalization/denormalization. Eg. If a topic thread has 5 constituents, 4 of which are in inbox, this will contain ^i => 4. Some labels of interest are archive, inbox, trash, spam, etc.",
-                    "type": "object"
-                },
-                "numConstituents": {
-                    "description": "Number of constituents for this entity.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "TopicStateUpdate": {
-            "id": "TopicStateUpdate",
-            "properties": {
-                "topicState": {
-                    "$ref": "TopicState"
-                }
-            },
-            "type": "object"
-        },
-        "TransactionContext": {
-            "description": "Storage information pertaining to the transaction with which a HistoryRecord is associated.",
-            "id": "TransactionContext",
-            "properties": {
-                "endingRecordId": {
-                    "description": "The last HistoryRecord of the transaction. Note that this may correspond to a record that is filtered by Tingle (and thus not returned to the client). See http://b/9513464.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "startingRecordId": {
-                    "description": "The first HistoryRecord of the transaction. Note that this may be a record of type INTERNAL.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "writeTimestampUs": {
-                    "description": "The microsecond timestamp of the transaction.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TransactionDebugInfo": {
-            "description": "HistoryRecord for debug info associated with the transaction, namely: TXN_DEBUG_INFO TODO(b/143845917) This is a short-term workaround for unblocking fusebox writes migration. Clean up the code or land a long-term solution after the rollout. go/diff-to-historyrecord",
-            "id": "TransactionDebugInfo",
-            "properties": {},
-            "type": "object"
-        },
-        "TranscriptionSessionInfo": {
-            "description": "Information about a transcription session.",
-            "id": "TranscriptionSessionInfo",
-            "properties": {
-                "sessionStateInfo": {
-                    "$ref": "SessionStateInfo",
-                    "description": "Transcription session's state information."
-                },
-                "transcriptionSessionId": {
-                    "description": "A unique server-generated ID for the transcription session.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TransientData": {
-            "description": "Transient generic data that will not be saved on the server.",
-            "id": "TransientData",
-            "properties": {},
-            "type": "object"
-        },
-        "Trigger": {
-            "id": "Trigger",
-            "properties": {
-                "actionType": {
-                    "description": "Each dispatcher should use an enum to for the actions that it supports. If a dispatcher has only one action, this does not need to be set. (It can be expanded later, defining the default behaviour as type 0.) For purposes such as batching, the type of a trigger is (dispatcher, action_type).",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "batchTimeUs": {
-                    "description": "Maximum possible delay in micros that can be tolerated so triggers can be batched, which makes processing more efficient compared to firing triggers individually. Note that the actual fire time will be somewhere in the timerange interval [fire_time_us, fire_time_us + batch_time_us).",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "dispatchId": {
-                    "description": "Must be set for DISPATCHER_STUBBY_DISPATCHER.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "dispatcher": {
-                    "description": "Which server should interpret action_type.",
-                    "enum": [
-                        "DISPATCHER_COPROC",
-                        "DISPATCHER_JOBSETTED_PRIMARY",
-                        "DISPATCHER_STRATUS",
-                        "DISPATCHER_TASKS_SERVER",
-                        "DISPATCHER_STUBBY_DISPATCHER",
-                        "DISPATCHER_CS"
-                    ],
-                    "enumDescriptions": [
-                        "Replace ACTION_INVOKE_X; the CS and Stratus are no longer limited to a single type of action. Each additional remote client should be defined here.",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "fireTimeUs": {
-                    "description": "Earliest time to fire at in microseconds. The actual time that the trigger will fire will be in the timerange: [fire_time_us, fire_time_us + batch_time_us).",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "jobsettedServerSpec": {
-                    "$ref": "JobsettedServerSpec",
-                    "description": "Must be set for DISPATCHER_JOBSETTED_PRIMARY."
-                },
-                "key": {
-                    "description": "The trigger key, if applicable.",
-                    "type": "string"
-                },
-                "rpcOptions": {
-                    "$ref": "RpcOptions"
-                },
-                "sliceFireTimeUs": {
-                    "description": "The slice_fire_time_us is automatically computed and stored as part of the trigger write. It represents the exact fire time at which the trigger will be queued to fire and will satisfy fire_time_us < slice_fire_time_us <= fire_time_us + batch_time_us Triggers have an index row in the slice trigger index with the row prefix matching this time. Note that this field is internal to gmail_cp and is ignored if set by external clients when adding / updating triggers.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "triggerAction": {
-                    "$ref": "TriggerAction",
-                    "description": "Trigger action to perform. This should always be set."
-                },
-                "triggerKey": {
-                    "$ref": "TriggerKey",
-                    "description": "The TriggerKey will uniquely determine a trigger within a given context. A context is a single message for message triggers or a single account for account triggers."
-                }
-            },
-            "type": "object"
-        },
-        "TriggerAction": {
-            "id": "TriggerAction",
-            "properties": {
-                "action": {
-                    "enum": [
-                        "ACTION_NONE",
-                        "ACTION_DELETE",
-                        "ACTION_CREATE_NEW_TRIGGER",
-                        "ACTION_MESSAGE_EXPUNGE",
-                        "ACTION_RETENTION_POLICY_UPDATE",
-                        "ACTION_UPDATE_ICEBOX_MODEL",
-                        "ACTION_INVOKE_CS",
-                        "ACTION_INVOKE_STRATUS",
-                        "ACTION_PDH_EXPUNGE",
-                        "ACTION_QUERY_RETENTION",
-                        "ACTION_INVOKE_JOBSETTED_PRIMARY",
-                        "ACTION_INVOKE_TASKS_SERVER",
-                        "ACTION_INVOKE_PUBLISHER",
-                        "ACTION_INVOKE_OBSERVER",
-                        "ACTION_PUSH_HISTORY_TO_PDH",
-                        "ACTION_INVOKE_STUBBY_DISPATCHER",
-                        "ACTION_PDH_BACKFILL",
-                        "ACTION_MESSAGE_UNDELETE",
-                        "ACTION_VAULT_END_USER_ACCESS",
-                        "ACTION_INVOKE_GROUPS",
-                        "ACTION_ACCOUNT_INITIALIZATION",
-                        "ACTION_INVOKE_OBSERVER_WIPEOUT",
-                        "ACTION_SERVICE_REMOVED_MESSAGE_EXPUNGE",
-                        "ACTION_EVERCLEAR_EXPUNGE",
-                        "ACTION_INVOKE_SMIME_CERTIFICATE_ISSUER",
-                        "ACTION_GROUPS_QUERY_RETENTION",
-                        "ACTION_INVOKE_SATELLITE_BACKUP",
-                        "ACTION_INVOKE_DEBUG_LOG",
-                        "ACTION_PREFERENCE_CLEANUP",
-                        "ACTION_CARIBOU_DATA_RETENTION",
-                        "ACTION_HISTORY_CLEANUP",
-                        "ACTION_ITEM_BULK_RELABEL",
-                        "ACTION_INVOKE_SATELLITE_IMAGE_PROCESSING",
-                        "ACTION_CARIBOU_DATA_RETENTION_DIFF",
-                        "ACTION_RELEVANCY_SCORE_BACKFILL",
-                        "ACTION_PDH_PUSH_NOTIFICATION_BACKFILL",
-                        "ACTION_AUTO_SAVE_DRAFT_EXPUNGE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "No-op",
-                        "No-op",
-                        "This action begins the message expunge process. It will trigger a purge attempt for all messages that have this trigger.",
-                        "When this trigger fires, the current retention policy will be loaded from the policy management system and stored into the preference cache (if necessary). This will also create new expunge triggers if necessary.",
-                        "When this trigger fires, the message should be used to update the user's importance model. See http://go/io-tingle for more details.",
-                        "Sends the trigger to the master Caribou server via the Stubby TriggerHandlerService interface (defined in caribou/coproc/proto/trigger_handler.proto). The trigger is handled at fire time in the account's primary replica, and only in non-primary replicas after a delay.",
-                        "Similar to ACTION_INVOKE_CS, but instead of sending the trigger to the master Caribou server, sends it to a Stratus server that also implements the TriggerHandlerService. This Stratus server is specified via FLAGS_triggers_stratus_server_address. The trigger is handled at fire time in the account's primary replica, and only in non-primary replicas after a delay.",
-                        "This action begins the message's PDH expunge. It will trigger a expunge (from pdh) attempt for all messages that have this trigger.",
-                        "When this trigger fires, based on the latest retention policy: 1. messages that need to be deleted will be deleted through the CS trigger handler 2. ^deleted messages that need to be expunged will be expunged",
-                        "Similar to ACTION_INVOKE_CS, but instead of sending the trigger to the master Caribou server, sends it to a jobsetted server in the user's master jobset using the consistent-hash homing algorithm. The jobsetted_server_spec must be specified when using this TriggerAction.",
-                        "Send the trigger to a Tasks server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_tasks_server_address.",
-                        "Send the trigger to a SmartMail Publisher server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_publisher_server_address.",
-                        "Send the trigger to an Observer server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_observer_server_address.",
-                        "Push a set of history records to PDH.",
-                        "Send the trigger to the stubby dispatcher, which routes the RPC using the value of Trigger.dispatch_id as the RoutingInfo.extension_tag field. Dispatched via the GSLB target specified by FLAGS_triggers_stubby_dispatcher_address.",
-                        "Backfills a set of records from an account and pushes them to PDH.",
-                        "Move messages from ^deleted to ^all. This trigger will only undelete messages that were deleted before the fire time of the trigger. Also, messages whose blobs are already deleted will not be undeleted. This is an account trigger.",
-                        "This trigger will undelete messages that were ^deleted arbitrarily long in the past and a trash label will be applied to these undeleted messages. This is an account trigger that will be written when the Vault admin enables end user access for the Vault customer. This trigger shares its implementation with the ACTION_MESSAGE_UNDELETE trigger.",
-                        "Send the trigger to a groups server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_groups_server_address.",
-                        "This trigger will be executed once per newly created account. It will be created as part of the first transaction written to the account. The trigger can also be written as part of an SVF in case we want to re-initialize every account.",
-                        "Send the trigger to an Observer server that implements the TriggerHandlerService for wipeout purpose. Dispatched via GSLB target specified by FLAGS_triggers_observer_server_address. It behaves differently from the invoke observer trigger (ACTION_INVOKE_OBSERVER) and should be batched separately. Tingle always fires this kind of action trigger for ^deleted messages.",
-                        "Begins the message expunge similar to ACTION_MESSAGE_EXPUNGE but doesn't check if the message was deleted at least 30 days back. To be used ONLY for service removal. See go/gmail-service-removal for more details.",
-                        "Sends RPC to everclear for the message expunge.",
-                        "Send the trigger to the S/MIME certificate issuer server. Dispatched via the GSLB target specified by FLAGS_triggers_smime_certificate_issuer_server_address.",
-                        "The retention trigger that will be written to implement Groups retention.",
-                        "Dispatches the permanent backup trigger to Satellite through Stubby dispatcher.",
-                        "Process the debug log trigger by adding message body before dispatching to the Caribou Server through Stubby Dispatcher.",
-                        "This trigger deletes expired temporary preferences. See go/tingle-temp-prefs for more details.",
-                        "Similar to ACTION_QUERY_RETENTION but uses the MessageRetention policies to trash/delete the messages: cs/caribou/base/lib/proto/data_retention.proto .",
-                        "This trigger deletes expired HistoryRecords. See go/history-record-cleanup for more details.",
-                        "This trigger relabels messages asynchronously. See go/fusebox-bulk-api for more details.",
-                        "Dispatches the image processing trigger to Satellite through Stubby dispatcher. See go/gmail-photo-sharing for details.",
-                        "Trigger for executing comparison logic between the output of ApplyDataRetention idle task and CaribouDataRetention trigger.",
-                        "Trigger for backfill relevancy score. see go/gmail-relevancy-scoring-write for detail.",
-                        "Trigger to backfill gaps left by pdh pushed via push notification. see go/tingle-moonshine-push-v2",
-                        "Begins the message expunge similar to ACTION_MESSAGE_EXPUNGE but fires within one day. To be used ONLY for auto save drafts. See go/faster-auto-save-draft-deletion for more details."
-                    ],
-                    "type": "string"
-                },
-                "data": {
-                    "description": "Clients should use extensions on the Trigger message instead.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "dataInt": {
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TriggerKey": {
-            "description": "A TriggerKey (type + instance_id) uniquely identifies a trigger within a message for a message-trigger and within an account for an account-trigger.",
-            "id": "TriggerKey",
-            "properties": {
-                "instanceId": {
-                    "description": "Identifier to distinguish multiple Triggers of the same type (per message or per account).",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "A non-empty string that identifies the type of Trigger. Triggers of the same type may be batched together. The universe of values for the type field should be finite as it is used as a stats key.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Triggers": {
-            "id": "Triggers",
-            "properties": {
-                "triggers": {
-                    "description": "A list of triggers.",
-                    "items": {
-                        "$ref": "Trigger"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TrustedResourceUrlProto": {
-            "description": "Message containing a string that is safe to use in all URL contexts in DOM APIs and HTML documents; even where the referred-to resource is interpreted as code, e.g., as the src of a script element.",
-            "id": "TrustedResourceUrlProto",
-            "properties": {
-                "privateDoNotAccessOrElseTrustedResourceUrlWrappedValue": {
-                    "description": "IMPORTANT: Never set or read this field, even from tests, it is private. See documentation at the top of .proto file for programming language packages with which to create or read this message.",
-                    "type": "string"
-                }
-            },
-            "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"
-        },
-        "UniversalPhoneAccess": {
-            "description": "Universal phone access contains information required to dial into a conference using one of a static list of phone numbers and a universal PIN. The phone number list is distributed separately.",
-            "id": "UniversalPhoneAccess",
-            "properties": {
-                "pin": {
-                    "description": "The PIN that users must enter after dialing a universal number. The pin consists of only decimal digits and the length may vary, though it generally is longer than a PhoneAccess.pin.",
-                    "type": "string"
-                },
-                "pstnInfoUrl": {
-                    "description": "This field has the same contents as the MeetingSpace.more_join_url field, and is included for compatibility reasons. Clients should use the other field instead. This field is deprecated and will be removed.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "UnmappedIdentity": {
             "id": "UnmappedIdentity",
             "properties": {
@@ -17878,60 +7803,6 @@
             },
             "type": "object"
         },
-        "UpdateBccRecipients": {
-            "id": "UpdateBccRecipients",
-            "properties": {
-                "bccRecipients": {
-                    "items": {
-                        "$ref": "Recipient"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateBody": {
-            "id": "UpdateBody",
-            "properties": {
-                "insertContents": {
-                    "description": "A repeated field that contains a series of content to insert into the draft that the user is currently editing. The content can contain HTML content or plain text content.",
-                    "items": {
-                        "$ref": "InsertContent"
-                    },
-                    "type": "array"
-                },
-                "type": {
-                    "enum": [
-                        "UNSPECIFIED_ACTION_TYPE",
-                        "IN_PLACE_INSERT",
-                        "INSERT_AT_START",
-                        "INSERT_AT_END",
-                        "REPLACE"
-                    ],
-                    "enumDescriptions": [
-                        "Default value when nothing is set for Type.",
-                        "Indicates this action is to perform an in-place insertion. By default the content is inserted at the current cursor position, if there is selected content, it replaces the selected content.",
-                        "Indicates this action is to perform insert at the start of the message body.",
-                        "Indicates this action is to perform insert at the end of the message body.",
-                        "Indicates this action is to replace the message body."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateCcRecipients": {
-            "id": "UpdateCcRecipients",
-            "properties": {
-                "ccRecipients": {
-                    "items": {
-                        "$ref": "Recipient"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "UpdateDataSourceRequest": {
             "id": "UpdateDataSourceRequest",
             "properties": {
@@ -17950,32 +7821,6 @@
             },
             "type": "object"
         },
-        "UpdateDraftActionMarkup": {
-            "id": "UpdateDraftActionMarkup",
-            "properties": {
-                "updateBccRecipients": {
-                    "$ref": "UpdateBccRecipients",
-                    "description": "If set, replaces the existing Bcc recipients of the draft the user is currently editing."
-                },
-                "updateBody": {
-                    "$ref": "UpdateBody",
-                    "description": "A field that contains a series of update actions to perform on the draft body that the user is currently editing."
-                },
-                "updateCcRecipients": {
-                    "$ref": "UpdateCcRecipients",
-                    "description": "If set, replaces the existing Cc recipients of the draft the user is currently editing."
-                },
-                "updateSubject": {
-                    "$ref": "UpdateSubject",
-                    "description": "If set, replaces the existing subject of the draft the user is currently editing."
-                },
-                "updateToRecipients": {
-                    "$ref": "UpdateToRecipients",
-                    "description": "If set, replaces the existing To recipients of the draft the user is currently editing."
-                }
-            },
-            "type": "object"
-        },
         "UpdateSchemaRequest": {
             "id": "UpdateSchemaRequest",
             "properties": {
@@ -17994,27 +7839,6 @@
             },
             "type": "object"
         },
-        "UpdateSubject": {
-            "id": "UpdateSubject",
-            "properties": {
-                "subject": {
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateToRecipients": {
-            "id": "UpdateToRecipients",
-            "properties": {
-                "toRecipients": {
-                    "items": {
-                        "$ref": "Recipient"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "UploadItemRef": {
             "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",
@@ -18026,445 +7850,13 @@
             },
             "type": "object"
         },
-        "UploadMetadata": {
-            "description": "Annotation metadata for user Upload artifacts.",
-            "id": "UploadMetadata",
+        "UserActivity": {
+            "description": "User's single or bulk query activity. This can be a logging query or deletion query.",
+            "id": "UserActivity",
             "properties": {
-                "attachmentToken": {
-                    "description": "Opaque token. Clients shall simply pass it back to the Backend. There is no guarantee the attachment_token returned on subsequent reads is the same even if nothing has changed. This field will NOT be saved into storage.",
-                    "type": "string"
-                },
-                "backendUploadMetadata": {
-                    "$ref": "AppsDynamiteSharedBackendUploadMetadata",
-                    "description": "Information about the uploaded attachment that is only used in Backend. This field will NOT be sent out of Google."
-                },
-                "clonedAuthorizedItemId": {
-                    "$ref": "AuthorizedItemId",
-                    "description": "The \"new\" secure identifier for Drive files. Should be used instead of the deprecated string drive_id field above. This should only be set if the upload file has been added to Drive. Note that older Drive files that do not have a ResourceKey should still use this field, with the resource_key field unset."
-                },
-                "clonedDriveAction": {
-                    "description": "DriveAction for organizing the cloned version of this upload in Drive, if the file has been added to Drive. This field is not set if the file has not been added to Drive. Additionally, this field is only set when part of a FileResult in a ListFilesResponse.",
-                    "enum": [
-                        "DRIVE_ACTION_UNSPECIFIED",
-                        "ADD_TO_DRIVE",
-                        "ORGANIZE",
-                        "ADD_SHORTCUT",
-                        "ADD_ANOTHER_SHORTCUT"
-                    ],
-                    "enumDescriptions": [
-                        "No organize action should be shown.",
-                        "Show \"Add to Drive\" button, for adding file that doesn't exist in Drive to Drive. Note that deleted Drive files that still exist (i.e. in your Trash) will still be ORGANIZE (this is consistent with Gmail Drive attachments).",
-                        "Show \"Move\" button, for organizing a Drive file the user has permission to move.",
-                        "Show \"Add shortcut\" button, for adding a shortcut to a Drive file the user does not have permission to move.",
-                        "Show \"Add another shortcut\" button, for Drive files the user has already created a shortcut to."
-                    ],
-                    "type": "string"
-                },
-                "clonedDriveId": {
-                    "description": "Reference to a Drive ID, if this upload file has been previously cloned to Drive. Note: this is deprecated in favor of the AuthorizedItemId below.",
-                    "type": "string"
-                },
-                "contentName": {
-                    "description": "The original file name for the content, not the full path.",
-                    "type": "string"
-                },
-                "contentType": {
-                    "description": "Type is from Scotty's best_guess by default: http://google3/uploader/agent/scotty_agent.proto?l=51&rcl=140889785",
-                    "type": "string"
-                },
-                "dlpMetricsMetadata": {
-                    "$ref": "AppsDynamiteSharedDlpMetricsMetadata",
-                    "description": "The metrics metadata of the Data Loss Prevention attachment scan."
-                },
-                "latestVirusScanTimestamp": {
-                    "description": "The timestamp of the most recent virus scan completed (in microseconds).",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "localId": {
-                    "description": "A copy of the LocalId in Annotation. This field is supposed to be filled by server only.",
-                    "type": "string"
-                },
-                "originalDimension": {
-                    "$ref": "AppsDynamiteSharedDimension",
-                    "description": "Original dimension of the content. Only set for image attachments."
-                },
-                "videoReference": {
-                    "$ref": "AppsDynamiteSharedVideoReference",
-                    "description": "Reference to a transcoded video attachment. Only set for video attachments."
-                },
-                "virusScanResult": {
-                    "description": "Result for a virus scan. It's duplicated in the above field apps.dynamite.shared.BackendUploadMetadata",
-                    "enum": [
-                        "UNKNOWN_VIRUS_SCAN_RESULT",
-                        "CLEAN",
-                        "INFECTED",
-                        "ERROR",
-                        "POLICY_VIOLATION"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "The document violates Google's policy for executables and archives."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UrlMetadata": {
-            "description": "Annotation metadata for a Weblink. In case of pasted link it can qualify to be other types in addition to being a URL - like DRIVE_DOC/DRIVE_SHEET and so on. The URL metadata will also be present and it's up to the client to decide which metadata to render it with. These fields are filled in using page render service.",
-            "id": "UrlMetadata",
-            "properties": {
-                "domain": {
-                    "description": "Domain for this url. If it's an IP address the address is returned.",
-                    "type": "string"
-                },
-                "gwsUrl": {
-                    "$ref": "SafeUrlProto",
-                    "description": "The signed GWS URL."
-                },
-                "gwsUrlExpirationTimestamp": {
-                    "description": "The expiration timestamp for GWS URL, only set when gws_url is set.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "imageHeight": {
-                    "description": "Dimensions of the image: height. This field is string to match with page render service response. Deprecated. Use int_image_height instead.",
-                    "type": "string"
-                },
-                "imageUrl": {
-                    "description": "Representative image of the website.",
-                    "type": "string"
-                },
-                "imageWidth": {
-                    "description": "Dimensions of the image: width. This field is string to match with page render service response. Deprecated. Use int_image_height instead.",
-                    "type": "string"
-                },
-                "intImageHeight": {
-                    "description": "Dimensions of the image: height.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "intImageWidth": {
-                    "description": "Dimensions of the image: width.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "mimeType": {
-                    "description": "Mime type of the content (Currently mapped from Page Render Service ItemType) Note that this is not necessarily the mime type of the http resource. For example a text/html from youtube or vimeo may actually be classified as a video type. Then we shall mark it as video/* since we don't know exactly what type of video it is.",
-                    "type": "string"
-                },
-                "redirectUrl": {
-                    "$ref": "SafeUrlProto",
-                    "description": "The stable redirect URL pointing to frontend server."
-                },
-                "shouldNotRender": {
-                    "description": "If the UrlMetadata is missing data for rendering a chip. Deprecated. Use Annotation.ChipRenderType instead.",
-                    "type": "boolean"
-                },
-                "snippet": {
-                    "description": "Snippet/small description of the weblink.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Title of the Weblink.",
-                    "type": "string"
-                },
-                "url": {
-                    "$ref": "SafeUrlProto",
-                    "description": "The original URL."
-                },
-                "urlSource": {
-                    "enum": [
-                        "URL_SOURCE_UNKNOWN",
-                        "SERVER_SUPPLIED_POLICY_VIOLATION",
-                        "AUTO_DETECTED_PLAIN_TEXT",
-                        "RICH_TEXT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "Set by the server, when it detects a URL in the message text",
-                        "Set by the client, when the user adds a link as a custom hyperlink. Validated by the server and persisted in storage."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "User": {
-            "description": "User profile information. This user is not necessarily member of a space.",
-            "id": "User",
-            "properties": {
-                "avatarUrl": {
-                    "description": "URL for the avatar picture of the User in dynamite",
-                    "type": "string"
-                },
-                "blockRelationship": {
-                    "$ref": "AppsDynamiteSharedUserBlockRelationship",
-                    "description": "Information about whether the user is blocked by requester and/or has blocked requester."
-                },
-                "botInfo": {
-                    "$ref": "BotInfo",
-                    "description": "Bot-specific profile information. Leave it empty for human users."
-                },
-                "deleted": {
-                    "description": "Deleted flag, if true, means User has been soft-deleted/purged Deprecated. Use user_account_state field instead.",
-                    "type": "boolean"
-                },
-                "email": {
-                    "description": "Email ID of the user",
-                    "type": "string"
-                },
-                "firstName": {
-                    "description": "First or given name of the user",
-                    "type": "string"
-                },
-                "gender": {
-                    "description": "Gender of the user",
-                    "type": "string"
-                },
-                "id": {
-                    "$ref": "UserId",
-                    "description": "UserId"
-                },
-                "isAnonymous": {
-                    "description": "Set to true if none of the depending services (Gaia, PeopleApi) returns any info for this user.",
-                    "type": "boolean"
-                },
-                "lastName": {
-                    "description": "Last or family name of the user",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Non-unique, user-defined display name of the User",
-                    "type": "string"
-                },
-                "organizationInfo": {
-                    "$ref": "AppsDynamiteSharedOrganizationInfo",
-                    "description": "Information about whether the user is a consumer user, or the GSuite customer that they belong to."
-                },
-                "phoneNumber": {
-                    "description": "Phone number(s) of the user",
-                    "items": {
-                        "$ref": "AppsDynamiteSharedPhoneNumber"
-                    },
-                    "type": "array"
-                },
-                "userAccountState": {
-                    "description": "State of user's Gaia Account",
-                    "enum": [
-                        "UNKNOWN_USER_ACCOUNT_STATE",
-                        "ENABLED",
-                        "DISABLED",
-                        "DELETED",
-                        "TEMPORARY_UNAVAILABLE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "User has Dynamite enabled.",
-                        "User doesn't have Dynamite enabled. This includes service disabled by admin, or user's account is suspended",
-                        "User account is deleted",
-                        "Failed to retrieve user's info. Will use user's email address as name and first_name."
-                    ],
-                    "type": "string"
-                },
-                "userProfileVisibility": {
-                    "description": "Visibility of user's Profile",
-                    "enum": [
-                        "UNKNOWN_USER_PROFILE_VISIBILITY",
-                        "FULL_PROFILE",
-                        "PRIMARY_MAIL",
-                        "INVITEE_EMAIL",
-                        "DELETED_USER",
-                        "UNKNOWN_USER",
-                        "FAILURE"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Caller has full visibility.",
-                        "Caller can only see target user's primary email from Gaia",
-                        "Caller can only see the email used to invite the target user",
-                        "Caller can only see the target user as a deleted user. Email is empty. Names are redacted as \"Deleted User\".",
-                        "Caller has no visibility to the target user at all. Email is empty. Names are redacted as \"Unknown User\".",
-                        "Stubby failed. Clients should always retry ASAP"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UserDisplayInfo": {
-            "description": "Resource for displaying user info",
-            "id": "UserDisplayInfo",
-            "properties": {
-                "avatarUrl": {
-                    "description": "The avatar to show for this user",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The name to show for this user",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UserId": {
-            "description": "Primary key for User resource.",
-            "id": "UserId",
-            "properties": {
-                "actingUserId": {
-                    "description": "Optional. Opaque, server-assigned ID of the user profile associated with App/user acting on behalf of the human user. This is currently only set when a 3P application is acting on the user's behalf.",
-                    "type": "string"
-                },
-                "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"
-        },
-        "UserInfo": {
-            "description": "Contains info regarding the updater of an Activity Feed item. Next Id: 8",
-            "id": "UserInfo",
-            "properties": {
-                "driveNotificationAvatarUrl": {
-                    "description": "Avatar url of the user who triggered the Drive Notification email. This field will be populated if we can extract such information from the Drive Notification email. This should only be used to fetch user avatars when updater_to_show_email is not populated. This field is not set for non-Drive Notification items.",
-                    "type": "string"
-                },
-                "updaterCountDisplayType": {
-                    "description": "Describes how updater_count_to_show should be used.",
-                    "enum": [
-                        "UPDATER_COUNT_DISPLAY_TYPE_UNSPECIFIED",
-                        "NO_DISPLAY_COUNT",
-                        "EXACT_COUNT",
-                        "NONZERO_COUNT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "No additional updaters where involved. Shows up in clients as \"$USERNAME replied\".",
-                        "A precise updater count is known and the value set in updater_count_to_show should be used. If set, updater_count_to_show is set to the total number of updaters minus the one set in updater_to_show. Shows up in clients as \"$USERNAME and $NUM others replied\".",
-                        "A precise updater count could not be calculated, but there is at least one. Any value set in updater_count_to_show should NOT be used. Shows up in clients as \"$USERNAME and others replied\"."
-                    ],
-                    "type": "string"
-                },
-                "updaterCountToShow": {
-                    "description": "The number of updaters for clients to show depending on UpdaterCountDisplayType.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "updaterToShowEmail": {
-                    "description": "The email of the updater for clients to show used for Gmail items. For Drive Notifications, this is the email of the user who triggered the Drive Notification email. This field will be populated if we can extract such information from the Drive Notification email. This is not the actual sender of the email, as the sender is always comments-noreply@docs.google.com.",
-                    "type": "string"
-                },
-                "updaterToShowGaiaId": {
-                    "description": "The gaia id of the updater for clients to show used for Gmail items. If the updater is an external user, the email field below should be populated.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "updaterToShowName": {
-                    "description": "The display name of the updater for clients to show used for Gmail items. For non-Drive Notification items, this field will always be populated. If the display name cannot be found for the user, the fallback string will be the email address. For Drive Notification items, this is the name of the user who triggered the Drive notification email. This field will be populated if we can extract such information from the Drive Notification email. If the name cannot be extracted, then the email will be the fallback string, which is used as the display name text in the UI when needed. This is not the actual sender of the email, as the sender is always comments-noreply@docs.google.com.",
-                    "type": "string"
-                },
-                "updaterToShowUserId": {
-                    "$ref": "UserId",
-                    "description": "The updater for clients to show used for Dynamite Chat items."
-                }
-            },
-            "type": "object"
-        },
-        "UserMentionData": {
-            "description": "Person metadata, for USER_MENTION segments. Should always contain at least one of user_gaia_id, user_id, email or user. The exact set of populated fields may differ depending on the context and the level in the serving stack; for example, emails will be elided on the viewing path. But as a general rule, a proto having any one of the four is valid, subject to the standard constraints of the applied annotations -- that is, communication between servers and clients will ignore jspb.ignore fields, and communication between servers and other servers (or between servers and storage) will ignore client_only fields. For more on the annotations, see the comments in social/common/segment_annotations.proto",
-            "id": "UserMentionData",
-            "properties": {
-                "email": {
-                    "type": "string"
-                },
-                "user": {
-                    "$ref": "PrincipalProto",
-                    "description": "If the principal is backed by a gaia id, DO NOT use this field. Use user_gaia_id/user_id fields instead."
-                },
-                "userGaiaId": {
-                    "description": "An unobfuscated gaia ID:",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "userId": {
-                    "description": "An obfuscated gaia ID:",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UserMentionMetadata": {
-            "description": "Annotation metadata for user mentions (+/@/-).",
-            "id": "UserMentionMetadata",
-            "properties": {
-                "displayName": {
-                    "description": "Display name of the mentioned user. This field should remain empty when clients resolve a UserMention annotation. It will be filled in when a UserMention is generated by the Integration Server.",
-                    "type": "string"
-                },
-                "gender": {
-                    "description": "Gender of the mentioned user. One of \"female\", \"male\" or \"other\". Used for choosing accurate translations for strings that contain the UserMention, when these need to be constructed (e.g. task assignment update message). This field should remain empty when clients resolve a UserMention. It will be filled in when a UserMention is generated by the Integration Server.",
-                    "type": "string"
-                },
-                "id": {
-                    "$ref": "UserId",
-                    "description": "To be deprecated. Use invitee_info field instead. ID of the User mentioned. This field should remain empty when type == MENTION_ALL."
-                },
-                "inviteeInfo": {
-                    "$ref": "InviteeInfo",
-                    "description": "Invitee UserId and email used when mentioned. This field should remain empty when type == MENTION_ALL. Invitee_info.email is only used when a user is @-mentioned with an email address, and it will be empty when clients get messages from Backend."
-                },
-                "type": {
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "INVITE",
-                        "UNINVITE",
-                        "MENTION",
-                        "MENTION_ALL",
-                        "FAILED_TO_ADD"
-                    ],
-                    "enumDescriptions": [
-                        "Default value for the enum. DO NOT USE.",
-                        "An @mention that invites a new member into the space",
-                        "DEPRECATED: An @mention that removes a member from a space. Support for this has been removed.",
-                        "An @mention of an existing member in the space.",
-                        "An @mention of all members in the space.",
-                        "Server-generated user mention, for clients to strikethrough."
-                    ],
-                    "type": "string"
-                },
-                "userMentionError": {
-                    "description": "Specific reason for the user mention failing, for fine-grained processing by clients (i.e. specific error message for space limit exceeded case) IMPORTANT: Set this only for FAILED_TO_ADD case.",
-                    "enum": [
-                        "USER_MENTION_ERROR_UNSPECIFIED",
-                        "MEMBERSHIP_LIMIT_EXCEEDED"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Failure caused by adding user to a room that is full"
-                    ],
-                    "type": "string"
+                "queryActivity": {
+                    "$ref": "QueryActivity",
+                    "description": "Contains data which needs to be logged/removed."
                 }
             },
             "type": "object"
@@ -18520,331 +7912,6 @@
                 }
             },
             "type": "object"
-        },
-        "VideoCallMetadata": {
-            "id": "VideoCallMetadata",
-            "properties": {
-                "meetingSpace": {
-                    "$ref": "MeetingSpace",
-                    "description": "Thor meeting space."
-                },
-                "shouldNotRender": {
-                    "description": "If this field is set to true, server should still contact external backends to get metadata for search but clients should not render this chip.",
-                    "type": "boolean"
-                },
-                "wasCreatedInCurrentGroup": {
-                    "description": "Whether this meeting space was created via Dynamite in this Dynamite group.",
-                    "type": "boolean"
-                }
-            },
-            "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"
-        },
-        "VoicePhoneNumber": {
-            "description": "Represents both long and short phone number that can be called or texted. Short telephone numbers are used to reach local services. Short numbers and their purpose differ from country to country. These numbers in US are in the form of N11 which is a three-digit abbreviated dialing telephone number.",
-            "id": "VoicePhoneNumber",
-            "properties": {
-                "e164": {
-                    "description": "E.164 formatted full phone number with leading +. This field also represents encoded form of short telephone numbers in E.164 format. e.g. \"911\" is encoded as \"+1911\".",
-                    "type": "string"
-                },
-                "i18nData": {
-                    "$ref": "VoicePhoneNumberI18nData",
-                    "description": "Additional data that could be added using the libphonenumber API."
-                }
-            },
-            "type": "object"
-        },
-        "VoicePhoneNumberI18nData": {
-            "id": "VoicePhoneNumberI18nData",
-            "properties": {
-                "countryCode": {
-                    "description": "The country calling code for this number, as defined by the ITU. For example, this would be 1 for NANPA countries, and 33 for France (for more info see i18n.phonenumbers.PhoneNumber.country_code).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "internationalNumber": {
-                    "description": "Display number formatted using the INTERNATIONAL format.",
-                    "type": "string"
-                },
-                "isValid": {
-                    "description": "When present, indicates the number is valid according to the libphonenumber's isValidNumber API (see https://code.google.com/p/libphonenumber/).",
-                    "type": "boolean"
-                },
-                "nationalNumber": {
-                    "description": "Display number formatted using the NATIONAL format.",
-                    "type": "string"
-                },
-                "regionCode": {
-                    "description": "A region (country, territory, continent, etc), as defined by Unicode's \"CLDR\", itself based on ISO 3166 (UN country codes). For details, see https://www.corp.google.com/~engdocs/java/com/google/i18n/identifiers/RegionCode.html",
-                    "type": "string"
-                },
-                "validationResult": {
-                    "description": "When set to a non-default value, indicates the validation reason that is set when phone number is invalid (is_valid is false).",
-                    "enum": [
-                        "UNKNOWN",
-                        "IS_POSSIBLE",
-                        "INVALID_COUNTRY_CODE",
-                        "TOO_SHORT",
-                        "TOO_LONG",
-                        "IS_POSSIBLE_LOCAL_ONLY",
-                        "INVALID_LENGTH"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "WhiteboardInfo": {
-            "description": "Information on a whiteboard attached to an active conference. A whiteboard is a Jam document.",
-            "id": "WhiteboardInfo",
-            "properties": {
-                "id": {
-                    "description": "The Cosmo Id of the whiteboard document (Jam).",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Title of the whiteboard document.",
-                    "type": "string"
-                },
-                "uri": {
-                    "description": "The uri for whiteboard document.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "WidgetMarkup": {
-            "id": "WidgetMarkup",
-            "properties": {
-                "buttons": {
-                    "description": "buttons is also oneof data and only one of these fields should be set.",
-                    "items": {
-                        "$ref": "Button"
-                    },
-                    "type": "array"
-                },
-                "dateTimePicker": {
-                    "$ref": "DateTimePicker"
-                },
-                "divider": {
-                    "$ref": "Divider"
-                },
-                "grid": {
-                    "$ref": "Grid"
-                },
-                "horizontalAlignment": {
-                    "description": "The horizontal alignment of this widget.",
-                    "enum": [
-                        "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
-                        "START",
-                        "CENTER",
-                        "END"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "image": {
-                    "$ref": "Image"
-                },
-                "imageKeyValue": {
-                    "$ref": "ImageKeyValue"
-                },
-                "keyValue": {
-                    "$ref": "KeyValue"
-                },
-                "menu": {
-                    "$ref": "Menu",
-                    "description": "Input Widgets"
-                },
-                "selectionControl": {
-                    "$ref": "SelectionControl"
-                },
-                "textField": {
-                    "$ref": "TextField"
-                },
-                "textKeyValue": {
-                    "$ref": "TextKeyValue"
-                },
-                "textParagraph": {
-                    "$ref": "TextParagraph",
-                    "description": "Read-only Widgets"
-                }
-            },
-            "type": "object"
-        },
-        "WonderCardDelete": {
-            "description": "Message delete history record extension that exports /wonder/message_mapping/{vertical} attribute of deleted messages which have any smartmail label (eg. ^cob_sm_invoice). go/how-dd-card-deletion",
-            "id": "WonderCardDelete",
-            "properties": {
-                "messageMappings": {
-                    "additionalProperties": {
-                        "$ref": "WonderMessageMapping"
-                    },
-                    "description": "Contains <{@code WonderCardType} enum value, value of /wonder/message_mapping/{vertical} attribute of deleted message> pairs.",
-                    "type": "object"
-                },
-                "msgId": {
-                    "description": "Message ID of the original deleted message",
-                    "format": "uint64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "WonderMessageMapping": {
-            "description": "Card mapping attached to original message as an attribute stored at /wonder/message_mapping/{vertical} Next ID: 2",
-            "id": "WonderMessageMapping",
-            "properties": {
-                "wonderCardMessageId": {
-                    "description": "List of wonder card (client-generated) message IDs generated based on the original message.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "WrappedResourceKey": {
-            "description": "A wrapper around a raw resource key. The secret should never be logged, and this proto annotates those secret fields to ensure that they are not. Clients are encouraged to use this proto rather than defining their own, to ensure that secrets are correctly annotated.",
-            "id": "WrappedResourceKey",
-            "properties": {
-                "resourceKey": {
-                    "description": "Resource key of the Drive item. This field should be unset if, depending on the context, the item does not have a resource key, or if none was specified. This must never be logged.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "YouTubeBroadcastSessionInfo": {
-            "description": "Information about a YouTube broadcast session.",
-            "id": "YouTubeBroadcastSessionInfo",
-            "properties": {
-                "broadcastStats": {
-                    "$ref": "YouTubeBroadcastStats",
-                    "description": "Current broadcast session's statistics."
-                },
-                "sessionStateInfo": {
-                    "$ref": "SessionStateInfo",
-                    "description": "YouTube broadcast session's state information."
-                },
-                "youTubeBroadcastSessionId": {
-                    "description": "A unique server-generated ID for the broadcast session.",
-                    "type": "string"
-                },
-                "youTubeLiveBroadcastEvent": {
-                    "$ref": "YouTubeLiveBroadcastEvent",
-                    "description": "The YouTube Live broadcast event that is being streamed to."
-                }
-            },
-            "type": "object"
-        },
-        "YouTubeBroadcastStats": {
-            "description": "Statistics of the YouTube broadcast session.",
-            "id": "YouTubeBroadcastStats",
-            "properties": {
-                "estimatedViewerCount": {
-                    "description": "Estimated concurrent viewer count.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "YouTubeLiveBroadcastEvent": {
-            "description": "Information about the broadcast to YouTube.",
-            "id": "YouTubeLiveBroadcastEvent",
-            "properties": {
-                "brandAccountGaiaId": {
-                    "description": "Input only. If the channel_id is for a YouTube Channel owned by a Brand Account, client is required to populate this field with the obfuscated gaia id of the Brand account when starting the broadcast.",
-                    "type": "string"
-                },
-                "broadcastId": {
-                    "description": "Input only. The broadcast id, used to control the lifecycle of the event on YouTube",
-                    "type": "string"
-                },
-                "channelId": {
-                    "description": "YouTube Channel associated with the broadcast.",
-                    "type": "string"
-                },
-                "viewUrl": {
-                    "description": "Output only. A URL that can be used to watch the meeting broadcast. Will be populated by the backend.",
-                    "readOnly": true,
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "YoutubeMetadata": {
-            "description": "Annotation metadata for YouTube artifact.",
-            "id": "YoutubeMetadata",
-            "properties": {
-                "id": {
-                    "description": "YouTube resource ID of the artifact.",
-                    "type": "string"
-                },
-                "shouldNotRender": {
-                    "description": "If this field is set to true, server should still contact external backends to get metadata for search but clients should not render this chip.",
-                    "type": "boolean"
-                },
-                "startTime": {
-                    "description": "YouTube query parameter for timestamp. YouTube specific flag that allows users to embed time token when sharing a link. This property contains parsed time token in seconds.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "YoutubeUserProto": {
-            "id": "YoutubeUserProto",
-            "properties": {
-                "youtubeUserId": {
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ZwiebackSessionProto": {
-            "description": "See go/zwieback. New uses of Zwieback sessions must be approved via go/zwieback-request.",
-            "id": "ZwiebackSessionProto",
-            "properties": {
-                "zwiebackSessionId": {
-                    "format": "uint64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Search API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudshell__v1.json b/discovery/googleapis/cloudshell__v1.json
index 209aca6..5cacc42 100644
--- a/discovery/googleapis/cloudshell__v1.json
+++ b/discovery/googleapis/cloudshell__v1.json
@@ -24,6 +24,13 @@
     "name": "cloudshell",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230623",
+    "rootUrl": "https://cloudshell.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Shell API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "operations": {
             "methods": {
@@ -372,8 +378,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://cloudshell.googleapis.com/",
     "schemas": {
         "AddPublicKeyMetadata": {
             "description": "Message included in the metadata field of operations returned from AddPublicKey.",
@@ -684,9 +688,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Shell API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudsupport__v2.json b/discovery/googleapis/cloudsupport__v2.json
new file mode 100644
index 0000000..c359d67
--- /dev/null
+++ b/discovery/googleapis/cloudsupport__v2.json
@@ -0,0 +1,1384 @@
+{
+    "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://cloudsupport.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Cloud Support",
+    "description": "Manages Google Cloud technical support cases for Customer Care support offerings. ",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/support/docs/apis",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "cloudsupport:v2",
+    "kind": "discovery#restDescription",
+    "name": "cloudsupport",
+    "ownerDomain": "google.com",
+    "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://cloudsupport.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Cloud Support API",
+    "version": "v2",
+    "version_module": true,
+    "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"
+        }
+    },
+    "resources": {
+        "caseClassifications": {
+            "methods": {
+                "search": {
+                    "description": "Retrieve valid classifications to be used when creating a support case. The classications are hierarchical, with each classification containing all levels of the hierarchy, separated by `\" > \"`. For example `\"Technical Issue > Compute > Compute Engine\"`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.",
+                    "flatPath": "v2/caseClassifications:search",
+                    "httpMethod": "GET",
+                    "id": "cloudsupport.caseClassifications.search",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "pageSize": {
+                            "description": "The maximum number of cases fetched with each request.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "pageToken": {
+                            "description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "query": {
+                            "description": "An expression written in the Google Cloud filter language. If non-empty, then only cases whose fields match the filter are returned. If empty, then no messages are filtered out.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/caseClassifications:search",
+                    "response": {
+                        "$ref": "SearchCaseClassificationsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                }
+            }
+        },
+        "cases": {
+            "methods": {
+                "close": {
+                    "description": "Close the specified case.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}:close",
+                    "httpMethod": "POST",
+                    "id": "cloudsupport.cases.close",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The fully qualified name of the case resource to be closed.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}:close",
+                    "request": {
+                        "$ref": "CloseCaseRequest"
+                    },
+                    "response": {
+                        "$ref": "Case"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "create": {
+                    "description": "Create a new case and associate it with the given Google Cloud Resource. The case object must have the following fields set: `display_name`, `description`, `classification`, and `priority`.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases",
+                    "httpMethod": "POST",
+                    "id": "cloudsupport.cases.create",
+                    "parameterOrder": [
+                        "parent"
+                    ],
+                    "parameters": {
+                        "parent": {
+                            "description": "Required. The name of the Google Cloud Resource under which the case should be created.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+parent}/cases",
+                    "request": {
+                        "$ref": "Case"
+                    },
+                    "response": {
+                        "$ref": "Case"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "escalate": {
+                    "description": "Escalate a case. Escalating a case will initiate the Google Cloud Support escalation management process. This operation is only available to certain Customer Care tiers. Go to https://cloud.google.com/support and look for 'Technical support escalations' in the feature list to find out which tiers are able to perform escalations.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}:escalate",
+                    "httpMethod": "POST",
+                    "id": "cloudsupport.cases.escalate",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The fully qualified name of the Case resource to be escalated.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}:escalate",
+                    "request": {
+                        "$ref": "EscalateCaseRequest"
+                    },
+                    "response": {
+                        "$ref": "Case"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "get": {
+                    "description": "Retrieve the specified case.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}",
+                    "httpMethod": "GET",
+                    "id": "cloudsupport.cases.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The fully qualified name of a case to be retrieved.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}",
+                    "response": {
+                        "$ref": "Case"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "list": {
+                    "description": "Retrieve all cases under the specified parent. Note: Listing cases under an Organization returns only the cases directly parented by that organization. To retrieve all cases under an organization, including cases parented by projects under that organization, use `cases.search`.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases",
+                    "httpMethod": "GET",
+                    "id": "cloudsupport.cases.list",
+                    "parameterOrder": [
+                        "parent"
+                    ],
+                    "parameters": {
+                        "filter": {
+                            "description": "An expression written in filter language. If non-empty, the query returns the cases that match the filter. Else, the query doesn't filter the cases. Filter expressions use the following fields with the operators equals (`=`) and `AND`: - `state`: The accepted values are `OPEN` or `CLOSED`. - `priority`: The accepted values are `P0`, `P1`, `P2`, `P3`, or `P4`. You can specify multiple values for priority using the `OR` operator. For example, `priority=P1 OR priority=P2`. - `creator.email`: The email address of the case creator. Examples: - `state=CLOSED` - `state=OPEN AND creator.email=\"tester@example.com\"` - `state=OPEN AND (priority=P0 OR priority=P1)`",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The maximum number of cases fetched with each request. Defaults to 10.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "pageToken": {
+                            "description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "parent": {
+                            "description": "Required. The fully qualified name of parent resource to list cases under.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+parent}/cases",
+                    "response": {
+                        "$ref": "ListCasesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "patch": {
+                    "description": "Update the specified case. Only a subset of fields can be updated.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}",
+                    "httpMethod": "PATCH",
+                    "id": "cloudsupport.cases.patch",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The resource name for the case.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "A list of attributes of the case object that should be updated as part of this request. Supported values are `priority`, `display_name`, and `subscriber_email_addresses`. If no fields are specified, all supported fields are updated. WARNING: If you do not provide a field mask, then you might accidentally clear some fields. For example, if you leave the field mask empty and do not provide a value for `subscriber_email_addresses`, then `subscriber_email_addresses` is updated to empty.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}",
+                    "request": {
+                        "$ref": "Case"
+                    },
+                    "response": {
+                        "$ref": "Case"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "search": {
+                    "description": "Search cases using the specified query.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases:search",
+                    "httpMethod": "GET",
+                    "id": "cloudsupport.cases.search",
+                    "parameterOrder": [
+                        "parent"
+                    ],
+                    "parameters": {
+                        "pageSize": {
+                            "description": "The maximum number of cases fetched with each request. The default page size is 10.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "pageToken": {
+                            "description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "parent": {
+                            "description": "The fully qualified name of parent resource to search cases under.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "query": {
+                            "description": "An expression written in filter language. A query uses the following fields with the operators equals (`=`) and `AND`: - `organization`: An organization name in the form `organizations/`. - `project`: A project name in the form `projects/`. - `state`: The accepted values are `OPEN` or `CLOSED`. - `priority`: The accepted values are `P0`, `P1`, `P2`, `P3`, or `P4`. You can specify multiple values for priority using the `OR` operator. For example, `priority=P1 OR priority=P2`. - `creator.email`: The email address of the case creator. - `billingAccount`: A billing account in the form `billingAccounts/` You must specify either `organization` or `project`. To search across `displayName`, `description`, and comments, use a global restriction with no keyword or operator. For example, `\"my search\"`. To search only cases updated after a certain date, use `update_time` restricted with that particular date, time, and timezone in ISO datetime format. For example, `update_time>\"2020-01-01T00:00:00-05:00\"`. `update_time` only supports the greater than operator (`>`). Examples: - `organization=\"organizations/123456789\"` - `project=\"projects/my-project-id\"` - `project=\"projects/123456789\"` - `billing_account=\"billingAccounts/123456-A0B0C0-CUZ789\"` - `organization=\"organizations/123456789\" AND state=CLOSED` - `project=\"projects/my-project-id\" AND creator.email=\"tester@example.com\"` - `project=\"projects/my-project-id\" AND (priority=P0 OR priority=P1)`",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+parent}/cases:search",
+                    "response": {
+                        "$ref": "SearchCasesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                }
+            },
+            "resources": {
+                "attachments": {
+                    "methods": {
+                        "list": {
+                            "description": "Retrieve all attachments associated with a support case.",
+                            "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/attachments",
+                            "httpMethod": "GET",
+                            "id": "cloudsupport.cases.attachments.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "The maximum number of attachments fetched with each request. If not provided, the default is 10. The maximum page size that will be returned is 100.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. The resource name of Case object for which attachments should be listed.",
+                                    "location": "path",
+                                    "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/attachments",
+                            "response": {
+                                "$ref": "ListAttachmentsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                },
+                "comments": {
+                    "methods": {
+                        "create": {
+                            "description": "Add a new comment to the specified Case. The comment object must have the following fields set: body.",
+                            "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/comments",
+                            "httpMethod": "POST",
+                            "id": "cloudsupport.cases.comments.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The resource name of Case to which this comment should be added.",
+                                    "location": "path",
+                                    "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/comments",
+                            "request": {
+                                "$ref": "Comment"
+                            },
+                            "response": {
+                                "$ref": "Comment"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Retrieve all Comments associated with the Case object.",
+                            "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/comments",
+                            "httpMethod": "GET",
+                            "id": "cloudsupport.cases.comments.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "The maximum number of comments fetched with each request. Defaults to 10.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. The resource name of Case object for which comments should be listed.",
+                                    "location": "path",
+                                    "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/comments",
+                            "response": {
+                                "$ref": "ListCommentsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "media": {
+            "methods": {
+                "download": {
+                    "description": "Download a file attachment on a case. Note: HTTP requests must append \"?alt=media\" to the URL.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/attachments/{attachmentsId}:download",
+                    "httpMethod": "GET",
+                    "id": "cloudsupport.media.download",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The resource name of the attachment to be downloaded.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+/cases/[^/]+/attachments/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}:download",
+                    "response": {
+                        "$ref": "Media"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ],
+                    "supportsMediaDownload": true,
+                    "useMediaDownloadService": true
+                },
+                "upload": {
+                    "description": "Create a file attachment on a case or Cloud resource. The attachment object must have the following fields set: filename.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/attachments",
+                    "httpMethod": "POST",
+                    "id": "cloudsupport.media.upload",
+                    "mediaUpload": {
+                        "accept": [
+                            "*/*"
+                        ],
+                        "protocols": {
+                            "simple": {
+                                "multipart": true,
+                                "path": "/upload/v2/{+parent}/attachments"
+                            }
+                        }
+                    },
+                    "parameterOrder": [
+                        "parent"
+                    ],
+                    "parameters": {
+                        "parent": {
+                            "description": "Required. The resource name of the case (or case parent) to which the attachment should be attached.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+parent}/attachments",
+                    "request": {
+                        "$ref": "CreateAttachmentRequest"
+                    },
+                    "response": {
+                        "$ref": "Attachment"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ],
+                    "supportsMediaUpload": true
+                }
+            }
+        }
+    },
+    "schemas": {
+        "Actor": {
+            "description": "An object containing information about the effective user and authenticated principal responsible for an action.",
+            "id": "Actor",
+            "properties": {
+                "displayName": {
+                    "description": "The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent.",
+                    "type": "string"
+                },
+                "email": {
+                    "description": "The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent.",
+                    "type": "string"
+                },
+                "googleSupport": {
+                    "description": "Output only. Whether the actor is a Google support actor.",
+                    "readOnly": true,
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "Attachment": {
+            "description": "Represents a file attached to a support case.",
+            "id": "Attachment",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The time at which the attachment was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "creator": {
+                    "$ref": "Actor",
+                    "description": "Output only. The user who uploaded the attachment. Note, the name and email will be obfuscated if the attachment was uploaded by Google support.",
+                    "readOnly": true
+                },
+                "filename": {
+                    "description": "The filename of the attachment (e.g. `\"graph.jpg\"`).",
+                    "type": "string"
+                },
+                "mimeType": {
+                    "description": "Output only. The MIME type of the attachment (e.g. text/plain).",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The resource name of the attachment.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "sizeBytes": {
+                    "description": "Output only. The size of the attachment in bytes.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Blobstore2Info": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "Blobstore2Info",
+            "properties": {
+                "blobGeneration": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "blobId": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "downloadReadHandle": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "readToken": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "uploadMetadataContainer": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Case": {
+            "description": "A support case.",
+            "id": "Case",
+            "properties": {
+                "classification": {
+                    "$ref": "CaseClassification",
+                    "description": "The issue classification applicable to this case."
+                },
+                "contactEmail": {
+                    "description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs.",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "Output only. The time this case was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "creator": {
+                    "$ref": "Actor",
+                    "description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
+                },
+                "description": {
+                    "description": "A broad description of the issue.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The short summary of the issue reported in this case.",
+                    "type": "string"
+                },
+                "escalated": {
+                    "description": "Whether the case is currently escalated.",
+                    "type": "boolean"
+                },
+                "languageCode": {
+                    "description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The resource name for the case.",
+                    "type": "string"
+                },
+                "priority": {
+                    "description": "The priority of this case.",
+                    "enum": [
+                        "PRIORITY_UNSPECIFIED",
+                        "P0",
+                        "P1",
+                        "P2",
+                        "P3",
+                        "P4"
+                    ],
+                    "enumDescriptions": [
+                        "Priority 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"
+                },
+                "state": {
+                    "description": "Output only. The current status of the support case.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "NEW",
+                        "IN_PROGRESS_GOOGLE_SUPPORT",
+                        "ACTION_REQUIRED",
+                        "SOLUTION_PROVIDED",
+                        "CLOSED"
+                    ],
+                    "enumDescriptions": [
+                        "Case is in an unknown state.",
+                        "The case has been created but no one is assigned to work on it yet.",
+                        "The case is currently being handled by Google support.",
+                        "Google is waiting for a response.",
+                        "A solution has been offered for the case, but it isn't yet closed.",
+                        "The case has been resolved."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "subscriberEmailAddresses": {
+                    "description": "The email addresses to receive updates on this case.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "testCase": {
+                    "description": "Whether this case was created for internal API testing and should not be acted on by the support team.",
+                    "type": "boolean"
+                },
+                "timeZone": {
+                    "description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time this case was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CaseClassification": {
+            "description": "A classification object with a product type and value.",
+            "id": "CaseClassification",
+            "properties": {
+                "displayName": {
+                    "description": "A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CloseCaseRequest": {
+            "description": "The request message for the CloseCase endpoint.",
+            "id": "CloseCaseRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Comment": {
+            "description": "A comment associated with a support case.",
+            "id": "Comment",
+            "properties": {
+                "body": {
+                    "description": "The full comment body. Maximum of 12800 characters. This can contain rich text syntax.",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "Output only. The time when this comment was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "creator": {
+                    "$ref": "Actor",
+                    "description": "Output only. The user or Google Support agent created this comment.",
+                    "readOnly": true
+                },
+                "name": {
+                    "description": "Output only. The resource name for the comment.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "plainTextBody": {
+                    "description": "Output only. DEPRECATED. An automatically generated plain text version of body with all rich text syntax stripped.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CompositeMedia": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "CompositeMedia",
+            "properties": {
+                "blobRef": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "blobstore2Info": {
+                    "$ref": "Blobstore2Info",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "cosmoBinaryReference": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "crc32cHash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "inline": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "length": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "md5Hash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "objectId": {
+                    "$ref": "ObjectId",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "path": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "referenceType": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "enum": [
+                        "PATH",
+                        "BLOB_REF",
+                        "INLINE",
+                        "BIGSTORE_REF",
+                        "COSMO_BINARY_REFERENCE"
+                    ],
+                    "enumDescriptions": [
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation"
+                    ],
+                    "type": "string"
+                },
+                "sha1Hash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ContentTypeInfo": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "ContentTypeInfo",
+            "properties": {
+                "bestGuess": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "fromBytes": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "fromFileName": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "fromHeader": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "fromUrlPath": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CreateAttachmentRequest": {
+            "description": "The request message for the CreateAttachment endpoint.",
+            "id": "CreateAttachmentRequest",
+            "properties": {
+                "attachment": {
+                    "$ref": "Attachment",
+                    "description": "Required. The attachment to be created."
+                }
+            },
+            "type": "object"
+        },
+        "DiffChecksumsResponse": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "DiffChecksumsResponse",
+            "properties": {
+                "checksumsLocation": {
+                    "$ref": "CompositeMedia",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "chunkSizeBytes": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "objectLocation": {
+                    "$ref": "CompositeMedia",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "objectSizeBytes": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "objectVersion": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DiffDownloadResponse": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "DiffDownloadResponse",
+            "properties": {
+                "objectLocation": {
+                    "$ref": "CompositeMedia",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                }
+            },
+            "type": "object"
+        },
+        "DiffUploadRequest": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "DiffUploadRequest",
+            "properties": {
+                "checksumsInfo": {
+                    "$ref": "CompositeMedia",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "objectInfo": {
+                    "$ref": "CompositeMedia",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "objectVersion": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DiffUploadResponse": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "DiffUploadResponse",
+            "properties": {
+                "objectVersion": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "originalObject": {
+                    "$ref": "CompositeMedia",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                }
+            },
+            "type": "object"
+        },
+        "DiffVersionResponse": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "DiffVersionResponse",
+            "properties": {
+                "objectSizeBytes": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "objectVersion": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DownloadParameters": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "DownloadParameters",
+            "properties": {
+                "allowGzipCompression": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "boolean"
+                },
+                "ignoreRange": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "EscalateCaseRequest": {
+            "description": "The request message for the EscalateCase endpoint.",
+            "id": "EscalateCaseRequest",
+            "properties": {
+                "escalation": {
+                    "$ref": "Escalation",
+                    "description": "The escalation object to be sent with the escalation request."
+                }
+            },
+            "type": "object"
+        },
+        "Escalation": {
+            "description": "An escalation of a support case.",
+            "id": "Escalation",
+            "properties": {
+                "justification": {
+                    "description": "Required. A free text description to accompany the `reason` field above. Provides additional context on why the case is being escalated.",
+                    "type": "string"
+                },
+                "reason": {
+                    "description": "Required. The reason why the Case is being escalated.",
+                    "enum": [
+                        "REASON_UNSPECIFIED",
+                        "RESOLUTION_TIME",
+                        "TECHNICAL_EXPERTISE",
+                        "BUSINESS_IMPACT"
+                    ],
+                    "enumDescriptions": [
+                        "The escalation reason is in an unknown state or has not been specified.",
+                        "The case is taking too long to resolve.",
+                        "The support agent does not have the expertise required to successfully resolve the issue.",
+                        "The issue is having a significant business impact."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListAttachmentsResponse": {
+            "description": "The response message for the ListAttachments endpoint.",
+            "id": "ListAttachmentsResponse",
+            "properties": {
+                "attachments": {
+                    "description": "The list of attachments associated with the given case.",
+                    "items": {
+                        "$ref": "Attachment"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results. This should be set in the `page_token` field of subsequent `cases.attachments.list` requests. If unspecified, there are no more results to retrieve.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListCasesResponse": {
+            "description": "The response message for the ListCases endpoint.",
+            "id": "ListCasesResponse",
+            "properties": {
+                "cases": {
+                    "description": "The list of cases associated with the Google Cloud Resource, after any filters have been applied.",
+                    "items": {
+                        "$ref": "Case"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results. This should be set in the `page_token` field of the subsequent `ListCasesRequest` message that is issued. If unspecified, there are no more results to retrieve.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListCommentsResponse": {
+            "description": "The response message for the ListComments endpoint.",
+            "id": "ListCommentsResponse",
+            "properties": {
+                "comments": {
+                    "description": "The list of Comments associated with the given Case.",
+                    "items": {
+                        "$ref": "Comment"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results. This should be set in the `page_token` field of subsequent `ListCommentsRequest` message that is issued. If unspecified, there are no more results to retrieve.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Media": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "Media",
+            "properties": {
+                "algorithm": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "bigstoreObjectRef": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "blobRef": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "blobstore2Info": {
+                    "$ref": "Blobstore2Info",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "compositeMedia": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "items": {
+                        "$ref": "CompositeMedia"
+                    },
+                    "type": "array"
+                },
+                "contentType": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "contentTypeInfo": {
+                    "$ref": "ContentTypeInfo",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "cosmoBinaryReference": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "crc32cHash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "diffChecksumsResponse": {
+                    "$ref": "DiffChecksumsResponse",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "diffDownloadResponse": {
+                    "$ref": "DiffDownloadResponse",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "diffUploadRequest": {
+                    "$ref": "DiffUploadRequest",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "diffUploadResponse": {
+                    "$ref": "DiffUploadResponse",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "diffVersionResponse": {
+                    "$ref": "DiffVersionResponse",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "downloadParameters": {
+                    "$ref": "DownloadParameters",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "filename": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "hash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "hashVerified": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "boolean"
+                },
+                "inline": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "isPotentialRetry": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "boolean"
+                },
+                "length": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "md5Hash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "mediaId": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "objectId": {
+                    "$ref": "ObjectId",
+                    "description": "# gdata.* are outside protos with mising documentation"
+                },
+                "path": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "referenceType": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "enum": [
+                        "PATH",
+                        "BLOB_REF",
+                        "INLINE",
+                        "GET_MEDIA",
+                        "COMPOSITE_MEDIA",
+                        "BIGSTORE_REF",
+                        "DIFF_VERSION_RESPONSE",
+                        "DIFF_CHECKSUMS_RESPONSE",
+                        "DIFF_DOWNLOAD_RESPONSE",
+                        "DIFF_UPLOAD_REQUEST",
+                        "DIFF_UPLOAD_RESPONSE",
+                        "COSMO_BINARY_REFERENCE",
+                        "ARBITRARY_BYTES"
+                    ],
+                    "enumDescriptions": [
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation",
+                        "# gdata.* are outside protos with mising documentation"
+                    ],
+                    "type": "string"
+                },
+                "sha1Hash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "sha256Hash": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "timestamp": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "token": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ObjectId": {
+            "description": "# gdata.* are outside protos with mising documentation",
+            "id": "ObjectId",
+            "properties": {
+                "bucketName": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                },
+                "generation": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "objectName": {
+                    "description": "# gdata.* are outside protos with mising documentation",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SearchCaseClassificationsResponse": {
+            "description": "The response message for SearchCaseClassifications endpoint.",
+            "id": "SearchCaseClassificationsResponse",
+            "properties": {
+                "caseClassifications": {
+                    "description": "The classifications retrieved.",
+                    "items": {
+                        "$ref": "CaseClassification"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results. This should be set in the `page_token` field of subsequent `SearchCaseClassificationsRequest` message that is issued. If unspecified, there are no more results to retrieve.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SearchCasesResponse": {
+            "description": "The response message for the SearchCases endpoint.",
+            "id": "SearchCasesResponse",
+            "properties": {
+                "cases": {
+                    "description": "The list of cases associated with the Google Cloud Resource, after any filters have been applied.",
+                    "items": {
+                        "$ref": "Case"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results. This should be set in the `page_token` field of subsequent `SearchCaseRequest` message that is issued. If unspecified, there are no more results to retrieve.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WorkflowOperationMetadata": {
+            "description": "Metadata about the operation. Used to lookup the current status.",
+            "id": "WorkflowOperationMetadata",
+            "properties": {
+                "namespace": {
+                    "description": "The namespace that the job was scheduled in. Must be included in the workflow metadata so the workflow status can be retrieved.",
+                    "type": "string"
+                },
+                "operationAction": {
+                    "description": "The type of action the operation is classified as.",
+                    "enum": [
+                        "OPERATION_ACTION_UNSPECIFIED",
+                        "CREATE_SUPPORT_ACCOUNT",
+                        "UPDATE_SUPPORT_ACCOUNT",
+                        "PURCHASE_SUPPORT_ACCOUNT"
+                    ],
+                    "enumDescriptions": [
+                        "Operation action is not specified.",
+                        "Operation pertains to the creation of a new support account.",
+                        "Operation pertains to the updating of an existing support account.",
+                        "Operation pertains to the purchasing of a support plan that may either create or update a support account."
+                    ],
+                    "type": "string"
+                },
+                "workflowOperationType": {
+                    "description": "Which version of the workflow service this operation came from.",
+                    "enum": [
+                        "UNKNOWN_OPERATION_TYPE",
+                        "WORKFLOWS_V1",
+                        "WORKFLOWS_V2"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown version.",
+                        "Version 1.",
+                        "Version 2."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    }
+}
diff --git a/discovery/googleapis/cloudtasks__v2.json b/discovery/googleapis/cloudtasks__v2.json
index d2467a6..26375bd 100644
--- a/discovery/googleapis/cloudtasks__v2.json
+++ b/discovery/googleapis/cloudtasks__v2.json
@@ -27,6 +27,13 @@
     "name": "cloudtasks",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230614",
+    "rootUrl": "https://cloudtasks.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Tasks API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -686,8 +692,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://cloudtasks.googleapis.com/",
     "schemas": {
         "AppEngineHttpRequest": {
             "description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If app_engine_routing_override is set on the queue, this value is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_uri Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
@@ -1370,9 +1374,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Tasks API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/cloudtrace__v2.json b/discovery/googleapis/cloudtrace__v2.json
index 9a8f2f3..4275471 100644
--- a/discovery/googleapis/cloudtrace__v2.json
+++ b/discovery/googleapis/cloudtrace__v2.json
@@ -27,6 +27,13 @@
     "name": "cloudtrace",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230622",
+    "rootUrl": "https://cloudtrace.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Trace API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -104,7 +111,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -179,8 +185,6 @@
             }
         }
     },
-    "revision": "20230504",
-    "rootUrl": "https://cloudtrace.googleapis.com/",
     "schemas": {
         "Annotation": {
             "description": "Text annotation with a set of attributes.",
@@ -225,7 +229,7 @@
                     "additionalProperties": {
                         "$ref": "AttributeValue"
                     },
-                    "description": "A set of attributes. Each attribute's key can be up to 128 bytes long. The value can be a string up to 256 bytes, a signed 64-bit integer, or the boolean values `true` or `false`. For example: \"/instance_id\": { \"string_value\": { \"value\": \"my-instance\" } } \"/http/request_bytes\": { \"int_value\": 300 } \"abc.com/myattribute\": { \"bool_value\": false }",
+                    "description": "A set of attributes. Each attribute's key can be up to 128 bytes long. The value can be a string up to 256 bytes, a signed 64-bit integer, or the boolean values `true` or `false`. For example: \"/instance_id\": { \"string_value\": { \"value\": \"my-instance\" } } \"/http/request_bytes\": { \"int_value\": 300 } \"example.com/myattribute\": { \"bool_value\": false }",
                     "type": "object"
                 },
                 "droppedAttributesCount": {
@@ -600,9 +604,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Trace API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/composer__v1.json b/discovery/googleapis/composer__v1.json
index dce96f2..3c32e6c 100644
--- a/discovery/googleapis/composer__v1.json
+++ b/discovery/googleapis/composer__v1.json
@@ -24,6 +24,13 @@
     "name": "composer",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230706",
+    "rootUrl": "https://composer.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Composer API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -137,6 +143,34 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "databaseFailover": {
+                                    "description": "Triggers database failover (only for highly resilient environments).",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}:databaseFailover",
+                                    "httpMethod": "POST",
+                                    "id": "composer.projects.locations.environments.databaseFailover",
+                                    "parameterOrder": [
+                                        "environment"
+                                    ],
+                                    "parameters": {
+                                        "environment": {
+                                            "description": "Target environment: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\"",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/environments/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+environment}:databaseFailover",
+                                    "request": {
+                                        "$ref": "DatabaseFailoverRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "delete": {
                                     "description": "Delete an environment.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}",
@@ -162,6 +196,59 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "executeAirflowCommand": {
+                                    "description": "Executes Airflow CLI command.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}:executeAirflowCommand",
+                                    "httpMethod": "POST",
+                                    "id": "composer.projects.locations.environments.executeAirflowCommand",
+                                    "parameterOrder": [
+                                        "environment"
+                                    ],
+                                    "parameters": {
+                                        "environment": {
+                                            "description": "The resource name of the environment in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\".",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/environments/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+environment}:executeAirflowCommand",
+                                    "request": {
+                                        "$ref": "ExecuteAirflowCommandRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "ExecuteAirflowCommandResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "fetchDatabaseProperties": {
+                                    "description": "Fetches database properties.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}:fetchDatabaseProperties",
+                                    "httpMethod": "GET",
+                                    "id": "composer.projects.locations.environments.fetchDatabaseProperties",
+                                    "parameterOrder": [
+                                        "environment"
+                                    ],
+                                    "parameters": {
+                                        "environment": {
+                                            "description": "Required. The resource name of the environment, in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\"",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/environments/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+environment}:fetchDatabaseProperties",
+                                    "response": {
+                                        "$ref": "FetchDatabasePropertiesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "get": {
                                     "description": "Get an existing environment.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}",
@@ -285,6 +372,34 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "pollAirflowCommand": {
+                                    "description": "Polls Airflow CLI command execution and fetches logs.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}:pollAirflowCommand",
+                                    "httpMethod": "POST",
+                                    "id": "composer.projects.locations.environments.pollAirflowCommand",
+                                    "parameterOrder": [
+                                        "environment"
+                                    ],
+                                    "parameters": {
+                                        "environment": {
+                                            "description": "The resource name of the environment in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\"",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/environments/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+environment}:pollAirflowCommand",
+                                    "request": {
+                                        "$ref": "PollAirflowCommandRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "PollAirflowCommandResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "saveSnapshot": {
                                     "description": "Creates a snapshots of a Cloud Composer environment. As a result of this operation, snapshot of environment's state is stored in a location specified in the SaveSnapshotRequest.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}:saveSnapshot",
@@ -312,6 +427,34 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
+                                },
+                                "stopAirflowCommand": {
+                                    "description": "Stops Airflow CLI command execution.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/environments/{environmentsId}:stopAirflowCommand",
+                                    "httpMethod": "POST",
+                                    "id": "composer.projects.locations.environments.stopAirflowCommand",
+                                    "parameterOrder": [
+                                        "environment"
+                                    ],
+                                    "parameters": {
+                                        "environment": {
+                                            "description": "The resource name of the environment in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\".",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/environments/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+environment}:stopAirflowCommand",
+                                    "request": {
+                                        "$ref": "StopAirflowCommandRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "StopAirflowCommandResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
                                 }
                             }
                         },
@@ -460,8 +603,6 @@
             }
         }
     },
-    "revision": "20230510",
-    "rootUrl": "https://composer.googleapis.com/",
     "schemas": {
         "AllowedIpRange": {
             "description": "Allowed IP range with user-provided description.",
@@ -547,6 +688,18 @@
             },
             "type": "object"
         },
+        "DatabaseFailoverRequest": {
+            "description": "Request to trigger database failover (only for highly resilient environments).",
+            "id": "DatabaseFailoverRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "DatabaseFailoverResponse": {
+            "description": "Response for DatabaseFailoverRequest.",
+            "id": "DatabaseFailoverResponse",
+            "properties": {},
+            "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 (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
@@ -712,6 +865,18 @@
                     "$ref": "RecoveryConfig",
                     "description": "Optional. The Recovery settings configuration of an environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
                 },
+                "resilienceMode": {
+                    "description": "Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer.",
+                    "enum": [
+                        "RESILIENCE_MODE_UNSPECIFIED",
+                        "HIGH_RESILIENCE"
+                    ],
+                    "enumDescriptions": [
+                        "Default mode doesn't change environment parameters.",
+                        "Enabled High Resilience mode, including Cloud SQL HA."
+                    ],
+                    "type": "string"
+                },
                 "softwareConfig": {
                     "$ref": "SoftwareConfig",
                     "description": "The configuration settings for software inside the environment."
@@ -731,6 +896,86 @@
             },
             "type": "object"
         },
+        "ExecuteAirflowCommandRequest": {
+            "description": "Execute Airflow Command request.",
+            "id": "ExecuteAirflowCommandRequest",
+            "properties": {
+                "command": {
+                    "description": "Airflow command.",
+                    "type": "string"
+                },
+                "parameters": {
+                    "description": "Parameters for the Airflow command/subcommand as an array of arguments. It may contain positional arguments like `[\"my-dag-id\"]`, key-value parameters like `[\"--foo=bar\"]` or `[\"--foo\",\"bar\"]`, or other flags like `[\"-f\"]`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "subcommand": {
+                    "description": "Airflow subcommand.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ExecuteAirflowCommandResponse": {
+            "description": "Response to ExecuteAirflowCommandRequest.",
+            "id": "ExecuteAirflowCommandResponse",
+            "properties": {
+                "error": {
+                    "description": "Error message. Empty if there was no error.",
+                    "type": "string"
+                },
+                "executionId": {
+                    "description": "The unique ID of the command execution for polling.",
+                    "type": "string"
+                },
+                "pod": {
+                    "description": "The name of the pod where the command is executed.",
+                    "type": "string"
+                },
+                "podNamespace": {
+                    "description": "The namespace of the pod where the command is executed.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ExitInfo": {
+            "description": "Information about how a command ended.",
+            "id": "ExitInfo",
+            "properties": {
+                "error": {
+                    "description": "Error message. Empty if there was no error.",
+                    "type": "string"
+                },
+                "exitCode": {
+                    "description": "The exit code from the command execution.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "FetchDatabasePropertiesResponse": {
+            "description": "Response for FetchDatabasePropertiesRequest.",
+            "id": "FetchDatabasePropertiesResponse",
+            "properties": {
+                "isFailoverReplicaAvailable": {
+                    "description": "The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only fail over to the failover replica when the status is true.",
+                    "type": "boolean"
+                },
+                "primaryGceZone": {
+                    "description": "The Compute Engine zone that the instance is currently serving from.",
+                    "type": "string"
+                },
+                "secondaryGceZone": {
+                    "description": "The Compute Engine zone that the failover instance is currently serving from for a regional Cloud SQL instance.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "IPAllocationPolicy": {
             "description": "Configuration for controlling how IPs are allocated in the GKE cluster running the Apache Airflow software.",
             "id": "IPAllocationPolicy",
@@ -792,6 +1037,22 @@
             },
             "type": "object"
         },
+        "Line": {
+            "description": "Contains information about a single line from logs.",
+            "id": "Line",
+            "properties": {
+                "content": {
+                    "description": "Text content of the log line.",
+                    "type": "string"
+                },
+                "lineNumber": {
+                    "description": "Number of the line.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "ListEnvironmentsResponse": {
             "description": "The environments in a project and location.",
             "id": "ListEnvironmentsResponse",
@@ -1051,7 +1312,8 @@
                         "UPDATE",
                         "CHECK",
                         "SAVE_SNAPSHOT",
-                        "LOAD_SNAPSHOT"
+                        "LOAD_SNAPSHOT",
+                        "DATABASE_FAILOVER"
                     ],
                     "enumDescriptions": [
                         "Unused.",
@@ -1060,7 +1322,8 @@
                         "A resource update operation.",
                         "A resource check operation.",
                         "Saves snapshot of the resource operation.",
-                        "Loads snapshot of the resource operation."
+                        "Loads snapshot of the resource operation.",
+                        "Triggers failover of environment's Cloud SQL instance (only for highly resilient environments)."
                     ],
                     "type": "string"
                 },
@@ -1095,6 +1358,52 @@
             },
             "type": "object"
         },
+        "PollAirflowCommandRequest": {
+            "description": "Poll Airflow Command request.",
+            "id": "PollAirflowCommandRequest",
+            "properties": {
+                "executionId": {
+                    "description": "The unique ID of the command execution.",
+                    "type": "string"
+                },
+                "nextLineNumber": {
+                    "description": "Line number from which new logs should be fetched.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "pod": {
+                    "description": "The name of the pod where the command is executed.",
+                    "type": "string"
+                },
+                "podNamespace": {
+                    "description": "The namespace of the pod where the command is executed.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PollAirflowCommandResponse": {
+            "description": "Response to PollAirflowCommandRequest.",
+            "id": "PollAirflowCommandResponse",
+            "properties": {
+                "exitInfo": {
+                    "$ref": "ExitInfo",
+                    "description": "The result exit status of the command."
+                },
+                "output": {
+                    "description": "Output from the command execution. It may not contain the full output and the caller may need to poll for more lines.",
+                    "items": {
+                        "$ref": "Line"
+                    },
+                    "type": "array"
+                },
+                "outputEnd": {
+                    "description": "Whether the command execution has finished and there is no more output.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "PrivateClusterConfig": {
             "description": "Configuration options for the private GKE cluster in a Cloud Composer environment.",
             "id": "PrivateClusterConfig",
@@ -1315,6 +1624,47 @@
             },
             "type": "object"
         },
+        "StopAirflowCommandRequest": {
+            "description": "Stop Airflow Command request.",
+            "id": "StopAirflowCommandRequest",
+            "properties": {
+                "executionId": {
+                    "description": "The unique ID of the command execution.",
+                    "type": "string"
+                },
+                "force": {
+                    "description": "If true, the execution is terminated forcefully (SIGKILL). If false, the execution is stopped gracefully, giving it time for cleanup.",
+                    "type": "boolean"
+                },
+                "pod": {
+                    "description": "The name of the pod where the command is executed.",
+                    "type": "string"
+                },
+                "podNamespace": {
+                    "description": "The namespace of the pod where the command is executed.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StopAirflowCommandResponse": {
+            "description": "Response to StopAirflowCommandRequest.",
+            "id": "StopAirflowCommandResponse",
+            "properties": {
+                "isDone": {
+                    "description": "Whether the execution is still running.",
+                    "type": "boolean"
+                },
+                "output": {
+                    "description": "Output message from stopping execution request.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "WebServerConfig": {
             "description": "The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*",
             "id": "WebServerConfig",
@@ -1413,9 +1763,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Composer API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/compute__v1.json b/discovery/googleapis/compute__v1.json
index 87718ec..ad43894 100644
--- a/discovery/googleapis/compute__v1.json
+++ b/discovery/googleapis/compute__v1.json
@@ -38,6 +38,12 @@
     "name": "compute",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230701",
+    "rootUrl": "https://compute.googleapis.com/",
+    "servicePath": "compute/v1/",
+    "title": "Compute Engine API",
+    "version": "v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -120,7 +126,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "acceleratorTypes": {
             "methods": {
@@ -2260,6 +2265,48 @@
                         "https://www.googleapis.com/auth/compute.readonly"
                     ]
                 },
+                "bulkInsert": {
+                    "description": "Bulk create a set of disks.",
+                    "flatPath": "projects/{project}/zones/{zone}/disks/bulkInsert",
+                    "httpMethod": "POST",
+                    "id": "compute.disks.bulkInsert",
+                    "parameterOrder": [
+                        "project",
+                        "zone"
+                    ],
+                    "parameters": {
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "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}/disks/bulkInsert",
+                    "request": {
+                        "$ref": "BulkInsertDiskResource"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
                 "createSnapshot": {
                     "description": "Creates a snapshot of a specified persistent disk. For regular snapshot creation, consider using snapshots.insert instead, as that method supports more features, such as creating snapshots in a project different from the source disk project.",
                     "flatPath": "projects/{project}/zones/{zone}/disks/{disk}/createSnapshot",
@@ -2758,6 +2805,145 @@
                         "https://www.googleapis.com/auth/compute"
                     ]
                 },
+                "startAsyncReplication": {
+                    "description": "Starts asynchronous replication. Must be invoked on the primary disk.",
+                    "flatPath": "projects/{project}/zones/{zone}/disks/{disk}/startAsyncReplication",
+                    "httpMethod": "POST",
+                    "id": "compute.disks.startAsyncReplication",
+                    "parameterOrder": [
+                        "project",
+                        "zone",
+                        "disk"
+                    ],
+                    "parameters": {
+                        "disk": {
+                            "description": "The name of the persistent disk.",
+                            "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}/disks/{disk}/startAsyncReplication",
+                    "request": {
+                        "$ref": "DisksStartAsyncReplicationRequest"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "stopAsyncReplication": {
+                    "description": "Stops asynchronous replication. Can be invoked either on the primary or on the secondary disk.",
+                    "flatPath": "projects/{project}/zones/{zone}/disks/{disk}/stopAsyncReplication",
+                    "httpMethod": "POST",
+                    "id": "compute.disks.stopAsyncReplication",
+                    "parameterOrder": [
+                        "project",
+                        "zone",
+                        "disk"
+                    ],
+                    "parameters": {
+                        "disk": {
+                            "description": "The name of the persistent disk.",
+                            "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}/disks/{disk}/stopAsyncReplication",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "stopGroupAsyncReplication": {
+                    "description": "Stops asynchronous replication for a consistency group of disks. Can be invoked either in the primary or secondary scope.",
+                    "flatPath": "projects/{project}/zones/{zone}/disks/stopGroupAsyncReplication",
+                    "httpMethod": "POST",
+                    "id": "compute.disks.stopGroupAsyncReplication",
+                    "parameterOrder": [
+                        "project",
+                        "zone"
+                    ],
+                    "parameters": {
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "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. This must be the zone of the primary or secondary disks in the consistency group.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "projects/{project}/zones/{zone}/disks/stopGroupAsyncReplication",
+                    "request": {
+                        "$ref": "DisksStopGroupAsyncReplicationResource"
+                    },
+                    "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}/disks/{resource}/testIamPermissions",
@@ -17255,7 +17441,7 @@
                     ]
                 },
                 "moveInstance": {
-                    "description": "Moves an instance and its attached persistent disks from one zone to another. *Note*: Moving VMs or disks by using this method might cause unexpected behavior. For more information, see the [known issue](/compute/docs/troubleshooting/known-issues#moving_vms_or_disks_using_the_moveinstance_api_or_the_causes_unexpected_behavior).",
+                    "description": "Moves an instance and its attached persistent disks from one zone to another. *Note*: Moving VMs or disks by using this method might cause unexpected behavior. For more information, see the [known issue](/compute/docs/troubleshooting/known-issues#moving_vms_or_disks_using_the_moveinstance_api_or_the_causes_unexpected_behavior). [Deprecated] This method is deprecated. See [moving instance across zones](/compute/docs/instances/moving-instance-across-zones) instead.",
                     "flatPath": "projects/{project}/moveInstance",
                     "httpMethod": "POST",
                     "id": "compute.projects.moveInstance",
@@ -19081,6 +19267,48 @@
                         "https://www.googleapis.com/auth/compute"
                     ]
                 },
+                "bulkInsert": {
+                    "description": "Bulk create a set of disks.",
+                    "flatPath": "projects/{project}/regions/{region}/disks/bulkInsert",
+                    "httpMethod": "POST",
+                    "id": "compute.regionDisks.bulkInsert",
+                    "parameterOrder": [
+                        "project",
+                        "region"
+                    ],
+                    "parameters": {
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "The name of the region for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "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"
+                        }
+                    },
+                    "path": "projects/{project}/regions/{region}/disks/bulkInsert",
+                    "request": {
+                        "$ref": "BulkInsertDiskResource"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
                 "createSnapshot": {
                     "description": "Creates a snapshot of a specified persistent disk. For regular snapshot creation, consider using snapshots.insert instead, as that method supports more features, such as creating snapshots in a project different from the source disk project.",
                     "flatPath": "projects/{project}/regions/{region}/disks/{disk}/createSnapshot",
@@ -19574,6 +19802,145 @@
                         "https://www.googleapis.com/auth/compute"
                     ]
                 },
+                "startAsyncReplication": {
+                    "description": "Starts asynchronous replication. Must be invoked on the primary disk.",
+                    "flatPath": "projects/{project}/regions/{region}/disks/{disk}/startAsyncReplication",
+                    "httpMethod": "POST",
+                    "id": "compute.regionDisks.startAsyncReplication",
+                    "parameterOrder": [
+                        "project",
+                        "region",
+                        "disk"
+                    ],
+                    "parameters": {
+                        "disk": {
+                            "description": "The name of the persistent disk.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "The name of the region for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "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"
+                        }
+                    },
+                    "path": "projects/{project}/regions/{region}/disks/{disk}/startAsyncReplication",
+                    "request": {
+                        "$ref": "RegionDisksStartAsyncReplicationRequest"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "stopAsyncReplication": {
+                    "description": "Stops asynchronous replication. Can be invoked either on the primary or on the secondary disk.",
+                    "flatPath": "projects/{project}/regions/{region}/disks/{disk}/stopAsyncReplication",
+                    "httpMethod": "POST",
+                    "id": "compute.regionDisks.stopAsyncReplication",
+                    "parameterOrder": [
+                        "project",
+                        "region",
+                        "disk"
+                    ],
+                    "parameters": {
+                        "disk": {
+                            "description": "The name of the persistent disk.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "The name of the region for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "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"
+                        }
+                    },
+                    "path": "projects/{project}/regions/{region}/disks/{disk}/stopAsyncReplication",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "stopGroupAsyncReplication": {
+                    "description": "Stops asynchronous replication for a consistency group of disks. Can be invoked either in the primary or secondary scope.",
+                    "flatPath": "projects/{project}/regions/{region}/disks/stopGroupAsyncReplication",
+                    "httpMethod": "POST",
+                    "id": "compute.regionDisks.stopGroupAsyncReplication",
+                    "parameterOrder": [
+                        "project",
+                        "region"
+                    ],
+                    "parameters": {
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "The name of the region for this request. This must be the region of the primary or secondary disks in the consistency group.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. 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"
+                        }
+                    },
+                    "path": "projects/{project}/regions/{region}/disks/stopGroupAsyncReplication",
+                    "request": {
+                        "$ref": "DisksStopGroupAsyncReplicationResource"
+                    },
+                    "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}/regions/{region}/disks/{resource}/testIamPermissions",
@@ -33368,8 +33735,6 @@
             }
         }
     },
-    "revision": "20230502",
-    "rootUrl": "https://compute.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
             "description": "A specification of the type and number of accelerator cards attached to the instance.",
@@ -33485,6 +33850,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -33514,6 +33880,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -33605,6 +33972,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -33634,6 +34002,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -33707,6 +34076,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -33736,6 +34106,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -33884,7 +34255,7 @@
                     "type": "string"
                 },
                 "ipVersion": {
-                    "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6. This can only be specified for a global address.",
+                    "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
                     "enum": [
                         "IPV4",
                         "IPV6",
@@ -34072,6 +34443,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -34101,6 +34473,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -34192,6 +34565,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -34221,6 +34595,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -34294,6 +34669,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -34323,6 +34699,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -34613,6 +34990,18 @@
                     ],
                     "type": "string"
                 },
+                "savedState": {
+                    "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api.",
+                    "enum": [
+                        "DISK_SAVED_STATE_UNSPECIFIED",
+                        "PRESERVED"
+                    ],
+                    "enumDescriptions": [
+                        "*[Default]* Disk state has not been preserved.",
+                        "Disk state has been preserved."
+                    ],
+                    "type": "string"
+                },
                 "shieldedInstanceInitialState": {
                     "$ref": "InitialStateConfig",
                     "description": "[Output Only] shielded vm initial state stored on disk"
@@ -34974,6 +35363,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -35003,6 +35393,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -35094,6 +35485,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -35123,6 +35515,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -35254,6 +35647,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -35283,6 +35677,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -35335,7 +35730,7 @@
             "id": "AutoscalingPolicy",
             "properties": {
                 "coolDownPeriodSec": {
-                    "description": "The number of seconds that the autoscaler waits before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds. Virtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.",
+                    "description": "The number of seconds that your application takes to initialize on a VM instance. This is referred to as the [initialization period](/compute/docs/autoscaler#cool_down_period). Specifying an accurate initialization period improves autoscaler decisions. For example, when scaling out, the autoscaler ignores data from VMs that are still initializing because those VMs might not yet represent normal usage of your application. The default initialization period is 60 seconds. Initialization periods might vary because of numerous factors. We recommend that you test how long your application takes to initialize. To do this, create a VM and time your application's startup process.",
                     "format": "int32",
                     "type": "integer"
                 },
@@ -35365,7 +35760,7 @@
                     "type": "integer"
                 },
                 "mode": {
-                    "description": "Defines operating mode for this policy.",
+                    "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\"",
                     "enum": [
                         "OFF",
                         "ON",
@@ -35833,6 +36228,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -35862,6 +36258,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -36092,7 +36489,7 @@
                 },
                 "outlierDetection": {
                     "$ref": "OutlierDetection",
-                    "description": "Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service. If not set, this feature is considered disabled. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, HTTP2, or GRPC, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
+                    "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
                 },
                 "port": {
                     "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
@@ -36237,6 +36634,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -36266,6 +36664,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -36578,6 +36977,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -36607,6 +37007,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -36785,6 +37186,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -36814,6 +37216,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -37130,6 +37533,17 @@
             },
             "type": "object"
         },
+        "BulkInsertDiskResource": {
+            "description": "A transient resource used in compute.disks.bulkInsert and compute.regionDisks.bulkInsert. It is only used to process requests and is not persisted.",
+            "id": "BulkInsertDiskResource",
+            "properties": {
+                "sourceConsistencyGroupPolicy": {
+                    "description": "The URL of the DiskConsistencyGroupPolicy for the group of disks to clone. This may be a full or partial URL, such as: - https://www.googleapis.com/compute/v1/projects/project/regions/region /resourcePolicies/resourcePolicy - projects/project/regions/region/resourcePolicies/resourcePolicy - regions/region/resourcePolicies/resourcePolicy ",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "BulkInsertInstanceResource": {
             "description": "A transient resource used in compute.instances.bulkInsert and compute.regionInstances.bulkInsert . This resource is not persisted anywhere, it is used only for processing the requests.",
             "id": "BulkInsertInstanceResource",
@@ -37487,6 +37901,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -37516,6 +37931,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -37607,6 +38023,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -37636,6 +38053,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -37709,6 +38127,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -37738,6 +38157,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -37986,7 +38406,7 @@
             "id": "CustomerEncryptionKey",
             "properties": {
                 "kmsKeyName": {
-                    "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key ",
+                    "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 ",
                     "type": "string"
                 },
                 "kmsKeyServiceAccount": {
@@ -38357,6 +38777,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -38386,6 +38807,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -38549,6 +38971,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -38578,6 +39001,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -38800,6 +39224,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -38829,6 +39254,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -38920,6 +39346,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -38949,6 +39376,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -39022,6 +39450,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -39051,6 +39480,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -39161,6 +39591,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -39190,6 +39621,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -39237,6 +39669,27 @@
             },
             "type": "object"
         },
+        "DisksStartAsyncReplicationRequest": {
+            "id": "DisksStartAsyncReplicationRequest",
+            "properties": {
+                "asyncSecondaryDisk": {
+                    "description": "The secondary disk to start asynchronous replication to. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DisksStopGroupAsyncReplicationResource": {
+            "description": "A transient resource used in compute.disks.stopGroupAsyncReplication and compute.regionDisks.stopGroupAsyncReplication. It is only used to process requests and is not persisted.",
+            "id": "DisksStopGroupAsyncReplicationResource",
+            "properties": {
+                "resourcePolicy": {
+                    "description": "The URL of the DiskConsistencyGroupPolicy for the group of disks to stop. This may be a full or partial URL, such as: - https://www.googleapis.com/compute/v1/projects/project/regions/region /resourcePolicies/resourcePolicy - projects/project/regions/region/resourcePolicies/resourcePolicy - regions/region/resourcePolicies/resourcePolicy ",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DisplayDevice": {
             "description": "A set of Display Device options",
             "id": "DisplayDevice",
@@ -39409,6 +39862,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -39438,6 +39892,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -39643,6 +40098,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -39672,6 +40128,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -39939,6 +40396,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -39968,6 +40426,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -40200,6 +40659,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -40229,6 +40689,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -40543,7 +41004,7 @@
                     "type": "boolean"
                 },
                 "allowGlobalAccess": {
-                    "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If the field is set to TRUE, clients can access ILB from all regions. Otherwise only allows access from clients in the same region as the internal load balancer.",
+                    "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
                     "type": "boolean"
                 },
                 "allowPscGlobalAccess": {
@@ -40795,6 +41256,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -40824,6 +41286,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -40915,6 +41378,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -40944,6 +41408,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -41045,6 +41510,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -41074,6 +41540,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -41325,7 +41792,7 @@
             "id": "GuestOsFeature",
             "properties": {
                 "type": {
-                    "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE - TDX_CAPABLE For more information, see Enabling guest operating system features.",
+                    "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features.",
                     "enum": [
                         "FEATURE_TYPE_UNSPECIFIED",
                         "GVNIC",
@@ -41660,6 +42127,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -41689,6 +42157,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -41886,6 +42355,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -41915,6 +42385,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -42013,6 +42484,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -42042,6 +42514,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -42115,6 +42588,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -42144,6 +42618,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -42596,6 +43071,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -42625,6 +43101,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -43002,6 +43479,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -43031,6 +43509,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -43344,6 +43823,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -43373,6 +43853,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -43515,6 +43996,10 @@
                     "format": "uint64",
                     "type": "string"
                 },
+                "instanceEncryptionKey": {
+                    "$ref": "CustomerEncryptionKey",
+                    "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
+                },
                 "keyRevocationActionType": {
                     "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
                     "enum": [
@@ -43754,6 +44239,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -43783,6 +44269,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -43993,6 +44480,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -44022,6 +44510,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -44113,6 +44602,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -44142,6 +44632,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -44240,6 +44731,10 @@
                     "description": "[Output Only] The URL of the Instance Group resource.",
                     "type": "string"
                 },
+                "instanceLifecyclePolicy": {
+                    "$ref": "InstanceGroupManagerInstanceLifecyclePolicy",
+                    "description": "The repair policy for this managed instance group."
+                },
                 "instanceTemplate": {
                     "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE.",
                     "type": "string"
@@ -44453,6 +44948,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -44482,6 +44978,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -44537,13 +45034,31 @@
                     "type": "string"
                 },
                 "initialDelaySec": {
-                    "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].",
+                    "description": "The initial delay is the number of seconds that a new VM takes to initialize and run its startup script. During a VM's initial delay period, the MIG ignores unsuccessful health checks because the VM might be in the startup process. This prevents the MIG from prematurely recreating a VM. If the health check receives a healthy response during the initial delay, it indicates that the startup process is complete and the VM is ready. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.",
                     "format": "int32",
                     "type": "integer"
                 }
             },
             "type": "object"
         },
+        "InstanceGroupManagerInstanceLifecyclePolicy": {
+            "id": "InstanceGroupManagerInstanceLifecyclePolicy",
+            "properties": {
+                "forceUpdateOnRepair": {
+                    "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. ",
+                    "enum": [
+                        "NO",
+                        "YES"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "InstanceGroupManagerList": {
             "description": "[Output Only] A list of managed instance groups.",
             "id": "InstanceGroupManagerList",
@@ -44588,6 +45103,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -44617,6 +45133,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -44753,14 +45270,14 @@
                     ],
                     "enumDescriptions": [
                         "Do not perform any action.",
-                        "Updates applied in runtime, instances will not be disrupted.",
-                        "Old instances will be deleted. New instances will be created from the target template.",
-                        "Every instance will be restarted."
+                        "Do not stop the instance.",
+                        "(Default.) Replace the instance according to the replacement method option.",
+                        "Stop the instance and start it again."
                     ],
                     "type": "string"
                 },
                 "mostDisruptiveAllowedAction": {
-                    "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to allow actions that do not need instance restart, RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.",
+                    "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to avoid restarting the VM and to limit disruption as much as possible. RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.",
                     "enum": [
                         "NONE",
                         "REFRESH",
@@ -44769,9 +45286,9 @@
                     ],
                     "enumDescriptions": [
                         "Do not perform any action.",
-                        "Updates applied in runtime, instances will not be disrupted.",
-                        "Old instances will be deleted. New instances will be created from the target template.",
-                        "Every instance will be restarted."
+                        "Do not stop the instance.",
+                        "(Default.) Replace the instance according to the replacement method option.",
+                        "Stop the instance and start it again."
                     ],
                     "type": "string"
                 },
@@ -44849,7 +45366,7 @@
                     "type": "array"
                 },
                 "minimalAction": {
-                    "description": "The minimal action that you want to perform on each instance during the update: - REPLACE: At minimum, delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance. - NONE: Do not disrupt the instance at all. By default, the minimum action is NONE. If your update requires a more disruptive action than you set with this flag, the necessary action is performed to execute the update.",
+                    "description": "The minimal action that you want to perform on each instance during the update: - REPLACE: At minimum, delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance and limit disruption as much as possible. - NONE: Do not disrupt the instance at all. By default, the minimum action is NONE. If your update requires a more disruptive action than you set with this flag, the necessary action is performed to execute the update.",
                     "enum": [
                         "NONE",
                         "REFRESH",
@@ -44858,14 +45375,14 @@
                     ],
                     "enumDescriptions": [
                         "Do not perform any action.",
-                        "Updates applied in runtime, instances will not be disrupted.",
-                        "Old instances will be deleted. New instances will be created from the target template.",
-                        "Every instance will be restarted."
+                        "Do not stop the instance.",
+                        "(Default.) Replace the instance according to the replacement method option.",
+                        "Stop the instance and start it again."
                     ],
                     "type": "string"
                 },
                 "mostDisruptiveAllowedAction": {
-                    "description": "The most disruptive action that you want to perform on each instance during the update: - REPLACE: Delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance. - NONE: Do not disrupt the instance at all. By default, the most disruptive allowed action is REPLACE. If your update requires a more disruptive action than you set with this flag, the update request will fail.",
+                    "description": "The most disruptive action that you want to perform on each instance during the update: - REPLACE: Delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance and limit disruption as much as possible. - NONE: Do not disrupt the instance at all. By default, the most disruptive allowed action is REPLACE. If your update requires a more disruptive action than you set with this flag, the update request will fail.",
                     "enum": [
                         "NONE",
                         "REFRESH",
@@ -44874,9 +45391,9 @@
                     ],
                     "enumDescriptions": [
                         "Do not perform any action.",
-                        "Updates applied in runtime, instances will not be disrupted.",
-                        "Old instances will be deleted. New instances will be created from the target template.",
-                        "Every instance will be restarted."
+                        "Do not stop the instance.",
+                        "(Default.) Replace the instance according to the replacement method option.",
+                        "Stop the instance and start it again."
                     ],
                     "type": "string"
                 }
@@ -44992,6 +45509,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -45021,6 +45539,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -45121,6 +45640,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -45150,6 +45670,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -45295,6 +45816,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -45324,6 +45846,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -45428,6 +45951,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -45457,6 +45981,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -45566,6 +46091,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -45595,6 +46121,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -45686,6 +46213,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -45715,6 +46243,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -46116,6 +46645,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -46145,6 +46675,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -46236,6 +46767,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -46265,6 +46797,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -46338,6 +46871,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -46367,6 +46901,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -46572,6 +47107,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -46601,6 +47137,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -47256,6 +47793,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -47285,6 +47823,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -47417,6 +47956,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -47446,6 +47986,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -47550,6 +48091,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -47579,6 +48121,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -47646,7 +48189,7 @@
             "type": "object"
         },
         "InterconnectDiagnostics": {
-            "description": "Diagnostics information about interconnect, contains detailed and current technical information about Google's side of the connection.",
+            "description": "Diagnostics information about the Interconnect connection, which contains detailed and current technical information about Google's side of the connection.",
             "id": "InterconnectDiagnostics",
             "properties": {
                 "arpCaches": {
@@ -47852,6 +48395,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -47881,6 +48425,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -48080,6 +48625,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -48109,6 +48655,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -48482,6 +49029,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -48511,6 +49059,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -48789,6 +49338,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -48818,6 +49368,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -49215,6 +49766,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -49244,6 +49796,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -49445,6 +49998,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -49474,6 +50028,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -49565,6 +50120,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -49594,6 +50150,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -49667,6 +50224,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -49696,6 +50254,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -50292,6 +50851,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -50321,6 +50881,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -50373,7 +50934,7 @@
             "id": "NetworkAttachmentConnectedEndpoint",
             "properties": {
                 "ipAddress": {
-                    "description": "The IP address assigned to the producer instance network interface. This value will be a range in case of Serverless.",
+                    "description": "The IPv4 address assigned to the producer instance network interface. This value will be a range in case of Serverless.",
                     "type": "string"
                 },
                 "projectIdOrNum": {
@@ -50456,6 +51017,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -50485,6 +51047,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -50558,6 +51121,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -50587,6 +51151,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -50739,6 +51304,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -50768,6 +51334,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -50841,6 +51408,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -50870,6 +51438,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -51106,6 +51675,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -51135,6 +51705,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -51278,6 +51849,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -51307,6 +51879,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -51473,6 +52046,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -51502,6 +52076,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -51575,6 +52150,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -51604,6 +52180,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -51822,6 +52399,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -51851,6 +52429,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -52258,6 +52837,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -52287,6 +52867,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -52410,6 +52991,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -52439,6 +53021,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -52661,6 +53244,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -52690,6 +53274,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -52763,6 +53348,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -52792,6 +53378,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -53015,6 +53602,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -53044,6 +53632,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -53135,6 +53724,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -53164,6 +53754,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -53252,6 +53843,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -53281,6 +53873,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -53440,6 +54033,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -53469,6 +54063,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -53560,6 +54155,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -53589,6 +54185,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -53662,6 +54259,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -53691,6 +54289,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -53851,6 +54450,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -53880,6 +54480,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -54095,6 +54696,7 @@
                                     "INJECTED_KERNELS_DEPRECATED",
                                     "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                     "LARGE_DEPLOYMENT_WARNING",
+                                    "LIST_OVERHEAD_QUOTA_EXCEED",
                                     "MISSING_TYPE_DEPENDENCY",
                                     "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                     "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -54124,6 +54726,7 @@
                                     "The operation involved use of an injected kernel, which is deprecated.",
                                     "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                     "When deploying a deployment with a exceedingly large number of resources",
+                                    "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                     "A resource depends on a missing type",
                                     "The route's nextHopIp address is not assigned to an instance on the network.",
                                     "The route's next hop instance cannot ip forward.",
@@ -54228,6 +54831,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -54257,6 +54861,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -54348,6 +54953,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -54377,6 +54983,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -54450,6 +55057,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -54479,6 +55087,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -54532,54 +55141,54 @@
             "properties": {
                 "baseEjectionTime": {
                     "$ref": "Duration",
-                    "description": "The base time that a host is ejected for. The real ejection time is equal to the base ejection time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s."
+                    "description": "The base time that a backend endpoint is ejected for. Defaults to 30000ms or 30s. After a backend endpoint is returned back to the load balancing pool, it can be ejected again in another ejection analysis. Thus, the total ejection time is equal to the base ejection time multiplied by the number of times the backend endpoint has been ejected. Defaults to 30000ms or 30s."
                 },
                 "consecutiveErrors": {
-                    "description": "Number of errors before a host is ejected from the connection pool. When the backend host is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
+                    "description": "Number of consecutive errors before a backend endpoint is ejected from the load balancing pool. When the backend endpoint is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "consecutiveGatewayFailure": {
-                    "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
+                    "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "enforcingConsecutiveErrors": {
-                    "description": "The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
+                    "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "enforcingConsecutiveGatewayFailure": {
-                    "description": "The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
+                    "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "enforcingSuccessRate": {
-                    "description": "The percentage chance that a host will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.",
+                    "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service uses Serverless NEG.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "interval": {
                     "$ref": "Duration",
-                    "description": "Time interval between ejection analysis sweeps. This can result in both new ejections as well as hosts being returned to service. Defaults to 1 second."
+                    "description": "Time interval between ejection analysis sweeps. This can result in both new ejections and backend endpoints being returned to service. The interval is equal to the number of seconds as defined in outlierDetection.interval.seconds plus the number of nanoseconds as defined in outlierDetection.interval.nanos. Defaults to 1 second."
                 },
                 "maxEjectionPercent": {
-                    "description": "Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 50%.",
+                    "description": "Maximum percentage of backend endpoints in the load balancing pool for the backend service that can be ejected if the ejection conditions are met. Defaults to 50%.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "successRateMinimumHosts": {
-                    "description": "The number of hosts in a cluster that must have enough request volume to detect success rate outliers. If the number of hosts is less than this setting, outlier detection via success rate statistics is not performed for any host in the cluster. Defaults to 5.",
+                    "description": "The number of backend endpoints in the load balancing pool that must have enough request volume to detect success rate outliers. If the number of backend endpoints is fewer than this setting, outlier detection via success rate statistics is not performed for any backend endpoint in the load balancing pool. Defaults to 5. Not supported when the backend service uses Serverless NEG.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "successRateRequestVolume": {
-                    "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this host in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that host. Defaults to 100.",
+                    "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this backend endpoint in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that backend endpoint. Defaults to 100. Not supported when the backend service uses Serverless NEG.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "successRateStdevFactor": {
-                    "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900.",
+                    "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * successRateStdevFactor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900. Not supported when the backend service uses Serverless NEG.",
                     "format": "int32",
                     "type": "integer"
                 }
@@ -54778,6 +55387,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -54807,6 +55417,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -54946,6 +55557,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -54975,6 +55587,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -55117,6 +55730,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -55146,6 +55760,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -55599,7 +56214,7 @@
                     "type": "string"
                 },
                 "dnsVerificationIp": {
-                    "description": "The IPv4 address to be used for reverse DNS verification.",
+                    "description": "The address to be used for reverse DNS verification.",
                     "type": "string"
                 },
                 "fingerprint": {
@@ -55613,7 +56228,7 @@
                     "type": "string"
                 },
                 "ipCidrRange": {
-                    "description": "The IPv4 address range, in CIDR format, represented by this public advertised prefix.",
+                    "description": "The address range, in CIDR format, represented by this public advertised prefix.",
                     "type": "string"
                 },
                 "kind": {
@@ -55714,6 +56329,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -55743,6 +56359,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -55840,7 +56457,7 @@
                     "type": "string"
                 },
                 "ipCidrRange": {
-                    "description": "The IPv4 address range, in CIDR format, represented by this public delegated prefix.",
+                    "description": "The IP address range, in CIDR format, represented by this public delegated prefix.",
                     "type": "string"
                 },
                 "isLiveMigration": {
@@ -55951,6 +56568,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -55980,6 +56598,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -56070,6 +56689,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -56099,6 +56719,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -56159,7 +56780,7 @@
                     "type": "string"
                 },
                 "ipCidrRange": {
-                    "description": "The IPv4 address range, in CIDR format, represented by this sub public delegated prefix.",
+                    "description": "The IP address range, in CIDR format, represented by this sub public delegated prefix.",
                     "type": "string"
                 },
                 "isAddress": {
@@ -56215,6 +56836,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -56244,6 +56866,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -56794,6 +57417,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -56823,6 +57447,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -56913,6 +57538,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -56942,6 +57568,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -57026,6 +57653,16 @@
             },
             "type": "object"
         },
+        "RegionDisksStartAsyncReplicationRequest": {
+            "id": "RegionDisksStartAsyncReplicationRequest",
+            "properties": {
+                "asyncSecondaryDisk": {
+                    "description": "The secondary disk to start asynchronous replication to. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "RegionInstanceGroupList": {
             "description": "Contains a list of InstanceGroup resources.",
             "id": "RegionInstanceGroupList",
@@ -57070,6 +57707,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -57099,6 +57737,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -57204,6 +57843,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -57233,6 +57873,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -57337,7 +57978,7 @@
                     "type": "array"
                 },
                 "minimalAction": {
-                    "description": "The minimal action that you want to perform on each instance during the update: - REPLACE: At minimum, delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance. - NONE: Do not disrupt the instance at all. By default, the minimum action is NONE. If your update requires a more disruptive action than you set with this flag, the necessary action is performed to execute the update.",
+                    "description": "The minimal action that you want to perform on each instance during the update: - REPLACE: At minimum, delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance and limit disruption as much as possible. - NONE: Do not disrupt the instance at all. By default, the minimum action is NONE. If your update requires a more disruptive action than you set with this flag, the necessary action is performed to execute the update.",
                     "enum": [
                         "NONE",
                         "REFRESH",
@@ -57346,14 +57987,14 @@
                     ],
                     "enumDescriptions": [
                         "Do not perform any action.",
-                        "Updates applied in runtime, instances will not be disrupted.",
-                        "Old instances will be deleted. New instances will be created from the target template.",
-                        "Every instance will be restarted."
+                        "Do not stop the instance.",
+                        "(Default.) Replace the instance according to the replacement method option.",
+                        "Stop the instance and start it again."
                     ],
                     "type": "string"
                 },
                 "mostDisruptiveAllowedAction": {
-                    "description": "The most disruptive action that you want to perform on each instance during the update: - REPLACE: Delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance. - NONE: Do not disrupt the instance at all. By default, the most disruptive allowed action is REPLACE. If your update requires a more disruptive action than you set with this flag, the update request will fail.",
+                    "description": "The most disruptive action that you want to perform on each instance during the update: - REPLACE: Delete the instance and create it again. - RESTART: Stop the instance and start it again. - REFRESH: Do not stop the instance and limit disruption as much as possible. - NONE: Do not disrupt the instance at all. By default, the most disruptive allowed action is REPLACE. If your update requires a more disruptive action than you set with this flag, the update request will fail.",
                     "enum": [
                         "NONE",
                         "REFRESH",
@@ -57362,9 +58003,9 @@
                     ],
                     "enumDescriptions": [
                         "Do not perform any action.",
-                        "Updates applied in runtime, instances will not be disrupted.",
-                        "Old instances will be deleted. New instances will be created from the target template.",
-                        "Every instance will be restarted."
+                        "Do not stop the instance.",
+                        "(Default.) Replace the instance according to the replacement method option.",
+                        "Stop the instance and start it again."
                     ],
                     "type": "string"
                 }
@@ -57449,6 +58090,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -57478,6 +58120,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -57626,6 +58269,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -57655,6 +58299,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -57787,6 +58432,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -57816,6 +58462,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -58172,6 +58819,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -58201,6 +58849,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -58291,6 +58940,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -58320,6 +58970,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -58404,6 +59055,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -58433,6 +59085,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -58550,6 +59203,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -58579,6 +59233,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -58637,6 +59292,10 @@
                 "description": {
                     "type": "string"
                 },
+                "diskConsistencyGroupPolicy": {
+                    "$ref": "ResourcePolicyDiskConsistencyGroupPolicy",
+                    "description": "Resource policy for disk consistency groups."
+                },
                 "groupPlacementPolicy": {
                     "$ref": "ResourcePolicyGroupPlacementPolicy",
                     "description": "Resource policy for instances for placement configuration."
@@ -58756,6 +59415,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -58785,6 +59445,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -58852,6 +59513,12 @@
             },
             "type": "object"
         },
+        "ResourcePolicyDiskConsistencyGroupPolicy": {
+            "description": "Resource policy for disk consistency groups.",
+            "id": "ResourcePolicyDiskConsistencyGroupPolicy",
+            "properties": {},
+            "type": "object"
+        },
         "ResourcePolicyGroupPlacementPolicy": {
             "description": "A GroupPlacementPolicy specifies resource placement configuration. It specifies the failure bucket separation as well as network locality",
             "id": "ResourcePolicyGroupPlacementPolicy",
@@ -58985,6 +59652,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -59014,6 +59682,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -59300,6 +59969,10 @@
                     "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway",
                     "type": "string"
                 },
+                "nextHopHub": {
+                    "description": "[Output Only] The full resource name of the Network Connectivity Center hub that will handle matching packets.",
+                    "type": "string"
+                },
                 "nextHopIlb": {
                     "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule ",
                     "type": "string"
@@ -59399,6 +60072,7 @@
                                     "INJECTED_KERNELS_DEPRECATED",
                                     "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                     "LARGE_DEPLOYMENT_WARNING",
+                                    "LIST_OVERHEAD_QUOTA_EXCEED",
                                     "MISSING_TYPE_DEPENDENCY",
                                     "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                     "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -59428,6 +60102,7 @@
                                     "The operation involved use of an injected kernel, which is deprecated.",
                                     "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                     "When deploying a deployment with a exceedingly large number of resources",
+                                    "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                     "A resource depends on a missing type",
                                     "The route's nextHopIp address is not assigned to an instance on the network.",
                                     "The route's next hop instance cannot ip forward.",
@@ -59551,6 +60226,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -59580,6 +60256,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -59783,6 +60460,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -59812,6 +60490,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -59951,6 +60630,18 @@
                     "$ref": "RouterBgpPeerBfd",
                     "description": "BFD configuration for the BGP peering."
                 },
+                "customLearnedIpRanges": {
+                    "description": "A list of user-defined custom learned route IP address ranges for a BGP session.",
+                    "items": {
+                        "$ref": "RouterBgpPeerCustomLearnedIpRange"
+                    },
+                    "type": "array"
+                },
+                "customLearnedRoutePriority": {
+                    "description": "The user-defined custom learned route priority for a BGP session. This value is applied to all custom learned route ranges for the session. You can choose a value from `0` to `65335`. If you don't provide a value, Google Cloud assigns a priority of `100` to the ranges.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "enable": {
                     "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE.",
                     "enum": [
@@ -60065,6 +60756,16 @@
             },
             "type": "object"
         },
+        "RouterBgpPeerCustomLearnedIpRange": {
+            "id": "RouterBgpPeerCustomLearnedIpRange",
+            "properties": {
+                "range": {
+                    "description": "The custom learned route IP address range. Must be a valid CIDR-formatted prefix. If an IP address is provided without a subnet mask, it is interpreted as, for IPv4, a `/32` singular IP address range, and, for IPv6, `/128`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "RouterInterface": {
             "id": "RouterInterface",
             "properties": {
@@ -60162,6 +60863,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -60191,6 +60893,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -60267,6 +60970,22 @@
             "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
             "id": "RouterNat",
             "properties": {
+                "autoNetworkTier": {
+                    "description": "The network tier to use when automatically reserving IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, PREMIUM tier will be used.",
+                    "enum": [
+                        "FIXED_STANDARD",
+                        "PREMIUM",
+                        "STANDARD",
+                        "STANDARD_OVERRIDES_FIXED_STANDARD"
+                    ],
+                    "enumDescriptions": [
+                        "Public internet quality with fixed bandwidth.",
+                        "High quality, Google-grade network tier, support for all networking products.",
+                        "Public internet quality, only limited support for other networking products.",
+                        "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured."
+                    ],
+                    "type": "string"
+                },
                 "drainNatIps": {
                     "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only.",
                     "items": {
@@ -60773,6 +61492,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -60802,6 +61522,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -61325,6 +62046,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -61354,6 +62076,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -61436,6 +62159,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -61465,6 +62189,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -61744,6 +62469,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -61773,6 +62499,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -62182,11 +62909,11 @@
             "id": "SecuritySettings",
             "properties": {
                 "clientTlsPolicy": {
-                    "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted. Note: This field currently has no impact.",
+                    "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted.",
                     "type": "string"
                 },
                 "subjectAltNames": {
-                    "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode). Note: This field currently has no impact.",
+                    "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode).",
                     "items": {
                         "type": "string"
                     },
@@ -62431,6 +63158,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -62460,6 +63188,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -62605,6 +63334,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -62634,6 +63364,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -62707,6 +63438,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -62736,6 +63468,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -63139,6 +63872,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -63168,6 +63902,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -63461,6 +64196,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -63490,6 +64226,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -63581,6 +64318,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -63610,6 +64348,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -63757,6 +64496,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -63786,6 +64526,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -63887,6 +64628,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -63916,6 +64658,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -64006,6 +64749,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -64035,6 +64779,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -64120,6 +64865,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -64149,6 +64895,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -64297,6 +65044,7 @@
                                     "INJECTED_KERNELS_DEPRECATED",
                                     "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                     "LARGE_DEPLOYMENT_WARNING",
+                                    "LIST_OVERHEAD_QUOTA_EXCEED",
                                     "MISSING_TYPE_DEPENDENCY",
                                     "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                     "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -64326,6 +65074,7 @@
                                     "The operation involved use of an injected kernel, which is deprecated.",
                                     "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                     "When deploying a deployment with a exceedingly large number of resources",
+                                    "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                     "A resource depends on a missing type",
                                     "The route's nextHopIp address is not assigned to an instance on the network.",
                                     "The route's next hop instance cannot ip forward.",
@@ -64643,6 +65392,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -64672,6 +65422,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -64763,6 +65514,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -64792,6 +65544,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -64951,6 +65704,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -64980,6 +65734,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -65222,6 +65977,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -65251,6 +66007,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -65324,6 +66081,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -65353,6 +66111,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -65417,6 +66176,11 @@
                     "format": "byte",
                     "type": "string"
                 },
+                "httpKeepAliveTimeoutSec": {
+                    "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For Global external HTTP(S) load balancer, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For Global external HTTP(S) load balancer (classic), this option is not available publicly.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "id": {
                     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
                     "format": "uint64",
@@ -65533,6 +66297,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -65562,6 +66327,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -65635,6 +66401,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -65664,6 +66431,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -65779,6 +66547,11 @@
                     "format": "byte",
                     "type": "string"
                 },
+                "httpKeepAliveTimeoutSec": {
+                    "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For Global external HTTP(S) load balancer, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For Global external HTTP(S) load balancer (classic), this option is not available publicly.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "id": {
                     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
                     "format": "uint64",
@@ -65893,6 +66666,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -65922,6 +66696,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -66013,6 +66788,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -66042,6 +66818,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -66196,6 +66973,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -66225,6 +67003,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -66316,6 +67095,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -66345,6 +67125,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -66418,6 +67199,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -66447,6 +67229,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -66630,6 +67413,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -66659,6 +67443,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -66767,6 +67552,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -66796,6 +67582,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -66921,6 +67708,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -66950,6 +67738,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -67166,6 +67955,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -67195,6 +67985,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -67268,6 +68059,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -67297,6 +68089,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -67481,6 +68274,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -67510,6 +68304,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -67601,6 +68396,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -67630,6 +68426,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -67822,6 +68619,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -67851,6 +68649,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -67942,6 +68741,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -67971,6 +68771,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -68044,6 +68845,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -68073,6 +68875,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -68331,6 +69134,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -68360,6 +69164,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -68548,6 +69353,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -68577,6 +69383,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -68650,6 +69457,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -68679,6 +69487,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -68927,6 +69736,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -68956,6 +69766,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -69161,6 +69972,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -69190,6 +70002,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -69371,6 +70184,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -69400,6 +70214,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -69491,6 +70306,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -69520,6 +70336,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -69711,6 +70528,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -69740,6 +70558,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -69992,6 +70811,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -70021,6 +70841,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -70112,6 +70933,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -70141,6 +70963,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -70214,6 +71037,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -70243,6 +71067,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -70392,6 +71217,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -70421,6 +71247,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -70599,6 +71426,7 @@
                                 "INJECTED_KERNELS_DEPRECATED",
                                 "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
                                 "LARGE_DEPLOYMENT_WARNING",
+                                "LIST_OVERHEAD_QUOTA_EXCEED",
                                 "MISSING_TYPE_DEPENDENCY",
                                 "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
                                 "NEXT_HOP_CANNOT_IP_FORWARD",
@@ -70628,6 +71456,7 @@
                                 "The operation involved use of an injected kernel, which is deprecated.",
                                 "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
                                 "When deploying a deployment with a exceedingly large number of resources",
+                                "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter.",
                                 "A resource depends on a missing type",
                                 "The route's nextHopIp address is not assigned to an instance on the network.",
                                 "The route's next hop instance cannot ip forward.",
@@ -70715,8 +71544,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "compute/v1/",
-    "title": "Compute Engine API",
-    "version": "v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/connectors__v1.json b/discovery/googleapis/connectors__v1.json
index cb3e34b..7177ac9 100644
--- a/discovery/googleapis/connectors__v1.json
+++ b/discovery/googleapis/connectors__v1.json
@@ -24,6 +24,13 @@
     "name": "connectors",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230706",
+    "rootUrl": "https://connectors.googleapis.com/",
+    "servicePath": "",
+    "title": "Connectors API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -451,6 +457,34 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "repairEventing": {
+                                    "description": "RepaiEventing tries to repair eventing related event subscriptions.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:repairEventing",
+                                    "httpMethod": "POST",
+                                    "id": "connectors.projects.locations.connections.repairEventing",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Resource name of the form: `projects/*/locations/*/connections/*`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:repairEventing",
+                                    "request": {
+                                        "$ref": "RepairEventingRequest"
+                                    },
+                                    "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": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:setIamPolicy",
@@ -541,6 +575,201 @@
                                         }
                                     }
                                 },
+                                "eventSubscriptions": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Creates a new EventSubscription in a given project,location and connection.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions",
+                                            "httpMethod": "POST",
+                                            "id": "connectors.projects.locations.connections.eventSubscriptions.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "eventSubscriptionId": {
+                                                    "description": "Required. Identifier to assign to the Event Subscription. Must be unique within scope of the parent resource.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. Parent resource of the EventSubscription, of the form: `projects/*/locations/*/connections/*`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/eventSubscriptions",
+                                            "request": {
+                                                "$ref": "EventSubscription"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a single EventSubscription.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "connectors.projects.locations.connections.eventSubscriptions.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Resource name of the form: `projects/*/locations/*/connections/*/eventsubscriptions/*`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+                                                    "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 EventSubscription.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}",
+                                            "httpMethod": "GET",
+                                            "id": "connectors.projects.locations.connections.eventSubscriptions.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Resource name of the form: `projects/*/locations/*/connections/*/eventSubscriptions/*`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "EventSubscription"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "List EventSubscriptions in a given project,location and connection.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions",
+                                            "httpMethod": "GET",
+                                            "id": "connectors.projects.locations.connections.eventSubscriptions.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "filter": {
+                                                    "description": "Filter. https://g3doc.corp.google.com/cloud/control2/g3doc/dev/apihosting/list_filtering.md#filtering.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "orderBy": {
+                                                    "description": "Order by parameters.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Page size.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Page token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. Parent resource of the EventSubscription, of the form: `projects/*/locations/*/connections/*`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/eventSubscriptions",
+                                            "response": {
+                                                "$ref": "ListEventSubscriptionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Updates the parameters of a single EventSubscription.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}",
+                                            "httpMethod": "PATCH",
+                                            "id": "connectors.projects.locations.connections.eventSubscriptions.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Resource name of the EventSubscription. Format: projects/{project}/locations/{location}/connections/{connection}/eventSubscriptions/{event_subscription}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "updateMask": {
+                                                    "description": "Required. The list of fields to update. Fields are specified relative to the Subscription. A field will be overwritten if it is in the mask. You can modify only the fields listed below. To update the EventSubscription details: * `serviceAccount`",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "EventSubscription"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "retry": {
+                                            "description": "RetryEventSubscription retries the registration of Subscription.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}:retry",
+                                            "httpMethod": "POST",
+                                            "id": "connectors.projects.locations.connections.eventSubscriptions.retry",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Resource name of the form: `projects/*/locations/*/connections/*/eventSubscriptions/*`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}:retry",
+                                            "request": {
+                                                "$ref": "RetryEventSubscriptionRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                },
                                 "runtimeActionSchemas": {
                                     "methods": {
                                         "list": {
@@ -826,6 +1055,40 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
+                                },
+                                "updateSettings": {
+                                    "description": "Update the global settings of a project.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/global/settings",
+                                    "httpMethod": "PATCH",
+                                    "id": "connectors.projects.locations.global.updateSettings",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. Resource name of the Connection. Format: projects/{project}/locations/global/settings}",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/global/settings$",
+                                            "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": "Settings"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
                                 }
                             },
                             "resources": {
@@ -1309,6 +1572,11 @@
                                                 "parent"
                                             ],
                                             "parameters": {
+                                                "filter": {
+                                                    "description": "Filter string.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
                                                 "pageSize": {
                                                     "description": "Page size.",
                                                     "format": "int32",
@@ -1431,6 +1699,73 @@
                                                         "https://www.googleapis.com/auth/cloud-platform"
                                                     ]
                                                 }
+                                            },
+                                            "resources": {
+                                                "eventtypes": {
+                                                    "methods": {
+                                                        "get": {
+                                                            "description": "Gets details of a single event type.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}/versions/{versionsId}/eventtypes/{eventtypesId}",
+                                                            "httpMethod": "GET",
+                                                            "id": "connectors.projects.locations.providers.connectors.versions.eventtypes.get",
+                                                            "parameterOrder": [
+                                                                "name"
+                                                            ],
+                                                            "parameters": {
+                                                                "name": {
+                                                                    "description": "Required. Resource name of the form: `projects/*/locations/*/providers/*/connectors/*/versions/*/eventtypes/*` Only global location is supported for EventType resource.",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+/versions/[^/]+/eventtypes/[^/]+$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+name}",
+                                                            "response": {
+                                                                "$ref": "EventType"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        },
+                                                        "list": {
+                                                            "description": "Lists Event Types in a given Connector Version.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}/versions/{versionsId}/eventtypes",
+                                                            "httpMethod": "GET",
+                                                            "id": "connectors.projects.locations.providers.connectors.versions.eventtypes.list",
+                                                            "parameterOrder": [
+                                                                "parent"
+                                                            ],
+                                                            "parameters": {
+                                                                "pageSize": {
+                                                                    "description": "Page size.",
+                                                                    "format": "int32",
+                                                                    "location": "query",
+                                                                    "type": "integer"
+                                                                },
+                                                                "pageToken": {
+                                                                    "description": "Page token.",
+                                                                    "location": "query",
+                                                                    "type": "string"
+                                                                },
+                                                                "parent": {
+                                                                    "description": "Required. Parent resource of the connectors, of the form: `projects/*/locations/*/providers/*/connectors/*/versions/*` Only global location is supported for EventType resource.",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+/versions/[^/]+$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+parent}/eventtypes",
+                                                            "response": {
+                                                                "$ref": "ListEventTypesResponse"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
@@ -1442,8 +1777,6 @@
             }
         }
     },
-    "revision": "20230503",
-    "rootUrl": "https://connectors.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.",
@@ -1659,6 +1992,10 @@
                     "description": "Value is a bool.",
                     "type": "boolean"
                 },
+                "encryptionKeyValue": {
+                    "$ref": "EncryptionKey",
+                    "description": "Value is a Encryption Key."
+                },
                 "intValue": {
                     "description": "Value is an integer",
                     "format": "int64",
@@ -1714,6 +2051,10 @@
                     "description": "Flag represents that this `ConfigVariable` must be provided for a connection.",
                     "type": "boolean"
                 },
+                "requiredCondition": {
+                    "$ref": "LogicalExpression",
+                    "description": "Condition under which a field would be required. The condition can be represented in the form of a logical expression."
+                },
                 "roleGrant": {
                     "$ref": "RoleGrant",
                     "description": "Role grant configuration for the config variable."
@@ -1745,7 +2086,8 @@
                         "BOOL",
                         "SECRET",
                         "ENUM",
-                        "AUTHORIZATION_CODE"
+                        "AUTHORIZATION_CODE",
+                        "ENCRYPTION_KEY"
                     ],
                     "enumDescriptions": [
                         "Value type is not specified.",
@@ -1754,7 +2096,8 @@
                         "Value type is boolean.",
                         "Value type is secret.",
                         "Value type is enum.",
-                        "Value type is authorization code."
+                        "Value type is authorization code.",
+                        "Encryption Key."
                     ],
                     "type": "string"
                 }
@@ -1776,10 +2119,40 @@
                     },
                     "type": "array"
                 },
+                "connectionRevision": {
+                    "description": "Output only. Connection revision. This field is only updated when the connection is created or updated by User.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "connectorVersion": {
                     "description": "Required. Connector version on which the connection is created. The format is: projects/*/locations/*/providers/*/connectors/*/versions/* Only global location is supported for ConnectorVersion resource.",
                     "type": "string"
                 },
+                "connectorVersionInfraConfig": {
+                    "$ref": "ConnectorVersionInfraConfig",
+                    "description": "Output only. Infra configs supported by Connector Version.",
+                    "readOnly": true
+                },
+                "connectorVersionLaunchStage": {
+                    "description": "Output only. Flag to mark the version indicating the launch stage.",
+                    "enum": [
+                        "LAUNCH_STAGE_UNSPECIFIED",
+                        "PREVIEW",
+                        "GA",
+                        "DEPRECATED",
+                        "PRIVATE_PREVIEW"
+                    ],
+                    "enumDescriptions": [
+                        "LAUNCH_STAGE_UNSPECIFIED.",
+                        "PREVIEW.",
+                        "GA.",
+                        "DEPRECATED.",
+                        "PRIVATE_PREVIEW."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "createTime": {
                     "description": "Output only. Created time.",
                     "format": "google-datetime",
@@ -1802,6 +2175,29 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "eventingConfig": {
+                    "$ref": "EventingConfig",
+                    "description": "Optional. Eventing config of a connection"
+                },
+                "eventingEnablementType": {
+                    "description": "Optional. Eventing enablement type. Will be nil if eventing is not enabled.",
+                    "enum": [
+                        "EVENTING_ENABLEMENT_TYPE_UNSPECIFIED",
+                        "EVENTING_AND_CONNECTION",
+                        "ONLY_EVENTING"
+                    ],
+                    "enumDescriptions": [
+                        "Eventing Enablement Type Unspecifeied.",
+                        "Both connection and eventing.",
+                        "Only Eventing."
+                    ],
+                    "type": "string"
+                },
+                "eventingRuntimeData": {
+                    "$ref": "EventingRuntimeData",
+                    "description": "Output only. Eventing Runtime Data.",
+                    "readOnly": true
+                },
                 "imageLocation": {
                     "description": "Output only. GCR location where the runtime image is stored. formatted like: gcr.io/{bucketName}/{imageName}",
                     "readOnly": true,
@@ -1996,6 +2392,11 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "eventingDetails": {
+                    "$ref": "EventingDetails",
+                    "description": "Output only. Eventing details. Will be null if eventing is not supported.",
+                    "readOnly": true
+                },
                 "externalUri": {
                     "description": "Output only. Link to external page.",
                     "readOnly": true,
@@ -2047,6 +2448,18 @@
             },
             "type": "object"
         },
+        "ConnectorInfraConfig": {
+            "description": "This cofiguration provides infra configs like rate limit threshold which need to be configurable for every connector version",
+            "id": "ConnectorInfraConfig",
+            "properties": {
+                "ratelimitThreshold": {
+                    "description": "Max QPS supported by the connector version before throttling of requests.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ConnectorVersion": {
             "description": "ConnectorVersion indicates a specific version of a connector.",
             "id": "ConnectorVersion",
@@ -2067,6 +2480,11 @@
                     "readOnly": true,
                     "type": "array"
                 },
+                "connectorInfraConfig": {
+                    "$ref": "ConnectorInfraConfig",
+                    "description": "Output only. Infra configs supported by Connector.",
+                    "readOnly": true
+                },
                 "createTime": {
                     "description": "Output only. Created time.",
                     "format": "google-datetime",
@@ -2091,6 +2509,11 @@
                     "description": "Output only. Configuration for Egress Control.",
                     "readOnly": true
                 },
+                "eventingConfigTemplate": {
+                    "$ref": "EventingConfigTemplate",
+                    "description": "Output only. Eventing configuration supported by the Connector.",
+                    "readOnly": true
+                },
                 "labels": {
                     "additionalProperties": {
                         "type": "string"
@@ -2160,6 +2583,19 @@
             },
             "type": "object"
         },
+        "ConnectorVersionInfraConfig": {
+            "description": "This cofiguration provides infra configs like rate limit threshold which need to be configurable for every connector version",
+            "id": "ConnectorVersionInfraConfig",
+            "properties": {
+                "ratelimitThreshold": {
+                    "description": "Output only. Max QPS supported by the connector version before throttling of requests.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ConnectorsLogConfig": {
             "description": "Log configuration for the connection.",
             "id": "ConnectorsLogConfig",
@@ -2287,6 +2723,49 @@
             "properties": {},
             "type": "object"
         },
+        "EncryptionKey": {
+            "description": "Encryption Key value.",
+            "id": "EncryptionKey",
+            "properties": {
+                "kmsKeyName": {
+                    "description": "The [KMS key name] with which the content of the Operation is encrypted. The expected format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`. Will be empty string if google managed.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Type.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "GOOGLE_MANAGED",
+                        "CUSTOMER_MANAGED"
+                    ],
+                    "enumDescriptions": [
+                        "Value type is not specified.",
+                        "Google Managed.",
+                        "Customer Managed."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EndPoint": {
+            "description": "Endpoint message includes details of the Destination endpoint.",
+            "id": "EndPoint",
+            "properties": {
+                "endpointUri": {
+                    "description": "The URI of the Endpoint.",
+                    "type": "string"
+                },
+                "headers": {
+                    "description": "List of Header to be added to the Endpoint.",
+                    "items": {
+                        "$ref": "Header"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "EndpointAttachment": {
             "description": "represents the Connector's Endpoint Attachment resource",
             "id": "EndpointAttachment",
@@ -2346,6 +2825,336 @@
             },
             "type": "object"
         },
+        "EventSubscription": {
+            "description": "represents the Connector's EventSubscription resource",
+            "id": "EventSubscription",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. Created time.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "destinations": {
+                    "$ref": "EventSubscriptionDestination",
+                    "description": "Optional. The destination to hit when we receive an event"
+                },
+                "eventTypeId": {
+                    "description": "Optional. Event type id of the event of current EventSubscription.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Required. Resource name of the EventSubscription. Format: projects/{project}/locations/{location}/connections/{connection}/eventSubscriptions/{event_subscription}",
+                    "type": "string"
+                },
+                "status": {
+                    "$ref": "EventSubscriptionStatus",
+                    "description": "Optional. Status indicates the status of the event subscription resource"
+                },
+                "subscriber": {
+                    "description": "Optional. name of the Subscriber for the current EventSubscription.",
+                    "type": "string"
+                },
+                "subscriberLink": {
+                    "description": "Optional. Link for Subscriber of the current EventSubscription.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. Updated time.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventSubscriptionDestination": {
+            "description": "Message for EventSubscription Destination to act on receiving an event",
+            "id": "EventSubscriptionDestination",
+            "properties": {
+                "endpoint": {
+                    "$ref": "EndPoint",
+                    "description": "OPTION 1: Hit an endpoint when we receive an event."
+                },
+                "serviceAccount": {
+                    "description": "Service account needed for runtime plane to trigger IP workflow.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "type of the destination",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "ENDPOINT"
+                    ],
+                    "enumDescriptions": [
+                        "Default state.",
+                        "Endpoint - Hit the value of endpoint when event is received"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventSubscriptionStatus": {
+            "description": "EventSubscription Status denotes the status of the EventSubscription resource.",
+            "id": "EventSubscriptionStatus",
+            "properties": {
+                "description": {
+                    "description": "Output only. Description of the state.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output only. State of Event Subscription resource.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATING",
+                        "UPDATING",
+                        "ACTIVE",
+                        "SUSPENDED",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Default state.",
+                        "EventSubscription creation is in progress.",
+                        "EventSubscription is in Updating status.",
+                        "EventSubscription is in Active state and is ready to receive events.",
+                        "EventSubscription is currently suspended.",
+                        "EventSubscription is in Error state."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventType": {
+            "description": "EventType includes fields.",
+            "id": "EventType",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. Created time.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "enrichedEventPayloadSchema": {
+                    "description": "Output only. Schema of the event payload after enriched. Will be null if read before send is not supported.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "entityType": {
+                    "description": "Output only. Runtime entity type name. Will be null if entity type map is not available. Used for read before send feature.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "eventPayloadSchema": {
+                    "description": "Output only. Schema of webhook event payload.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "eventTypeId": {
+                    "description": "Output only. Event type id. Example: `ticket.created`.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "idPath": {
+                    "description": "Output only. Id path denotes the path of id in webhook payload.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. Resource name of the eventtype. Format: projects/{project}/locations/{location}/providers/{provider}/connectors/{connector}/versions/{version}/eventtypes/{eventtype} Only global location is supported for Connector resource.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. Updated time.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventingConfig": {
+            "description": "Eventing Configuration of a connection",
+            "id": "EventingConfig",
+            "properties": {
+                "additionalVariables": {
+                    "description": "Additional eventing related field values",
+                    "items": {
+                        "$ref": "ConfigVariable"
+                    },
+                    "type": "array"
+                },
+                "authConfig": {
+                    "$ref": "AuthConfig",
+                    "description": "Auth details for the webhook adapter."
+                },
+                "encryptionKey": {
+                    "$ref": "ConfigVariable",
+                    "description": "Encryption key (can be either Google managed or CMEK)."
+                },
+                "enrichmentEnabled": {
+                    "description": "Enrichment Enabled.",
+                    "type": "boolean"
+                },
+                "registrationDestinationConfig": {
+                    "$ref": "DestinationConfig",
+                    "description": "Registration endpoint for auto regsitration."
+                }
+            },
+            "type": "object"
+        },
+        "EventingConfigTemplate": {
+            "description": "Eventing Config details of a connector version.",
+            "id": "EventingConfigTemplate",
+            "properties": {
+                "additionalVariables": {
+                    "description": "Additional fields that need to be rendered.",
+                    "items": {
+                        "$ref": "ConfigVariableTemplate"
+                    },
+                    "type": "array"
+                },
+                "authConfigTemplates": {
+                    "description": "AuthConfigTemplates represents the auth values for the webhook adapter.",
+                    "items": {
+                        "$ref": "AuthConfigTemplate"
+                    },
+                    "type": "array"
+                },
+                "autoRefresh": {
+                    "description": "Auto refresh to extend webhook life.",
+                    "type": "boolean"
+                },
+                "autoRegistrationSupported": {
+                    "description": "Auto Registration supported.",
+                    "type": "boolean"
+                },
+                "encryptionKeyTemplate": {
+                    "$ref": "ConfigVariableTemplate",
+                    "description": "Encryption key (can be either Google managed or CMEK)."
+                },
+                "enrichmentSupported": {
+                    "description": "Enrichment Supported.",
+                    "type": "boolean"
+                },
+                "isEventingSupported": {
+                    "description": "Is Eventing Supported.",
+                    "type": "boolean"
+                },
+                "registrationDestinationConfig": {
+                    "$ref": "DestinationConfigTemplate",
+                    "description": "Registration host destination config template."
+                }
+            },
+            "type": "object"
+        },
+        "EventingDetails": {
+            "description": "Eventing Details message.",
+            "id": "EventingDetails",
+            "properties": {
+                "customEventTypes": {
+                    "description": "Output only. Custom Event Types.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "description": {
+                    "description": "Output only. Description.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "documentationLink": {
+                    "description": "Output only. Link to public documentation.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "iconLocation": {
+                    "description": "Output only. Cloud storage location of the icon.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "launchStage": {
+                    "description": "Output only. Eventing Launch Stage.",
+                    "enum": [
+                        "LAUNCH_STAGE_UNSPECIFIED",
+                        "PREVIEW",
+                        "GA",
+                        "DEPRECATED",
+                        "PRIVATE_PREVIEW"
+                    ],
+                    "enumDescriptions": [
+                        "LAUNCH_STAGE_UNSPECIFIED.",
+                        "PREVIEW.",
+                        "GA.",
+                        "DEPRECATED.",
+                        "PRIVATE_PREVIEW."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. Name of the Eventing trigger.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "searchTags": {
+                    "description": "Output only. Array of search keywords.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EventingRuntimeData": {
+            "description": "Eventing runtime data has the details related to eventing managed by the system.",
+            "id": "EventingRuntimeData",
+            "properties": {
+                "eventsListenerEndpoint": {
+                    "description": "Output only. Events listener endpoint. The value will populated after provisioning the events listener.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "status": {
+                    "$ref": "EventingStatus",
+                    "description": "Output only. Current status of eventing.",
+                    "readOnly": true
+                }
+            },
+            "type": "object"
+        },
+        "EventingStatus": {
+            "description": "EventingStatus indicates the state of eventing.",
+            "id": "EventingStatus",
+            "properties": {
+                "description": {
+                    "description": "Output only. Description of error if State is set to \"ERROR\".",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output only. State.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Default state.",
+                        "Eventing is enabled and ready to receive events.",
+                        "Eventing is not active due to an error."
+                    ],
+                    "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",
@@ -2535,6 +3344,59 @@
             },
             "type": "object"
         },
+        "FieldComparison": {
+            "description": "Field that needs to be compared.",
+            "id": "FieldComparison",
+            "properties": {
+                "boolValue": {
+                    "description": "Boolean value",
+                    "type": "boolean"
+                },
+                "comparator": {
+                    "description": "Comparator to use for comparing the field value.",
+                    "enum": [
+                        "COMPARATOR_UNSPECIFIED",
+                        "EQUALS",
+                        "NOT_EQUALS"
+                    ],
+                    "enumDescriptions": [
+                        "The default value.",
+                        "The field value must be equal to the specified value.",
+                        "The field value must not be equal to the specified value."
+                    ],
+                    "type": "string"
+                },
+                "intValue": {
+                    "description": "Integer value",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "key": {
+                    "description": "Key of the field.",
+                    "type": "string"
+                },
+                "stringValue": {
+                    "description": "String value",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Header": {
+            "description": "Header details for a given header to be added to Endpoint.",
+            "id": "Header",
+            "properties": {
+                "key": {
+                    "description": "Key of Header.",
+                    "type": "string"
+                },
+                "value": {
+                    "description": "Value of Header.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "InputParameter": {
             "description": "Metadata of an input parameter.",
             "id": "InputParameter",
@@ -2775,6 +3637,49 @@
             },
             "type": "object"
         },
+        "ListEventSubscriptionsResponse": {
+            "description": "Response message for ConnectorsService.ListEventSubscriptions",
+            "id": "ListEventSubscriptionsResponse",
+            "properties": {
+                "eventSubscriptions": {
+                    "description": "Subscriptions.",
+                    "items": {
+                        "$ref": "EventSubscription"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Next page token.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListEventTypesResponse": {
+            "description": "Response message for Connectors.ListEventTypes.",
+            "id": "ListEventTypesResponse",
+            "properties": {
+                "eventTypes": {
+                    "description": "A list of connector versions.",
+                    "items": {
+                        "$ref": "EventType"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Next page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ListLocationsResponse": {
             "description": "The response message for Locations.ListLocations.",
             "id": "ListLocationsResponse",
@@ -2939,6 +3844,41 @@
             },
             "type": "object"
         },
+        "LogicalExpression": {
+            "description": "Struct for representing boolean expressions.",
+            "id": "LogicalExpression",
+            "properties": {
+                "fieldComparisons": {
+                    "description": "A list of fields to be compared.",
+                    "items": {
+                        "$ref": "FieldComparison"
+                    },
+                    "type": "array"
+                },
+                "logicalExpressions": {
+                    "description": "A list of nested conditions to be compared.",
+                    "items": {
+                        "$ref": "LogicalExpression"
+                    },
+                    "type": "array"
+                },
+                "logicalOperator": {
+                    "description": "The logical operator to use between the fields and conditions.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "AND",
+                        "OR"
+                    ],
+                    "enumDescriptions": [
+                        "The default value.",
+                        "AND operator; The conditions must all be true.",
+                        "OR operator; At least one of the conditions must be true."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ManagedZone": {
             "description": "represents the Connector's Managed Zone resource",
             "id": "ManagedZone",
@@ -3011,6 +3951,10 @@
                     "description": "Authorization code to be exchanged for access and refresh tokens.",
                     "type": "string"
                 },
+                "authUri": {
+                    "description": "Auth URL for Authorization Code Flow",
+                    "type": "string"
+                },
                 "clientId": {
                     "description": "Client ID for user-provided OAuth app.",
                     "type": "string"
@@ -3263,6 +4207,12 @@
             "properties": {},
             "type": "object"
         },
+        "RepairEventingRequest": {
+            "description": "Request message for ConnectorsService.RepairEventing",
+            "id": "RepairEventingRequest",
+            "properties": {},
+            "type": "object"
+        },
         "Resource": {
             "description": "Resource definition",
             "id": "Resource",
@@ -3405,8 +4355,14 @@
             },
             "type": "object"
         },
+        "RetryEventSubscriptionRequest": {
+            "description": "Request message for ConnectorsService.RefreshEventSubscription",
+            "id": "RetryEventSubscriptionRequest",
+            "properties": {},
+            "type": "object"
+        },
         "RoleGrant": {
-            "description": "This configuration defines all the Cloud IAM roles that needs to be granted to a particular GCP resource for the selected prinicpal like service account. These configurations will let UI display to customers what IAM roles need to be granted by them. Or these configurations can be used by the UI to render a 'grant' button to do the same on behalf of the user.",
+            "description": "This configuration defines all the Cloud IAM roles that needs to be granted to a particular GCP resource for the selected principal like service account. These configurations will let UI display to customers what IAM roles need to be granted by them. Or these configurations can be used by the UI to render a 'grant' button to do the same on behalf of the user.",
             "id": "RoleGrant",
             "properties": {
                 "helperTextTemplate": {
@@ -3603,6 +4559,11 @@
                     "readOnly": true,
                     "type": "boolean"
                 },
+                "tenantProjectId": {
+                    "description": "Output only. Tenant project id of the consumer project.",
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "vpcsc": {
                     "description": "Optional. Flag indicates whether vpc-sc is enabled.",
                     "type": "boolean"
@@ -3893,9 +4854,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Connectors API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/connectors__v2.json b/discovery/googleapis/connectors__v2.json
index ddaf3e6..ef54990 100644
--- a/discovery/googleapis/connectors__v2.json
+++ b/discovery/googleapis/connectors__v2.json
@@ -24,6 +24,13 @@
     "name": "connectors",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230706",
+    "rootUrl": "https://connectors.googleapis.com/",
+    "servicePath": "",
+    "title": "Connectors API",
+    "version": "v2",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -476,8 +482,6 @@
             }
         }
     },
-    "revision": "20230503",
-    "rootUrl": "https://connectors.googleapis.com/",
     "schemas": {
         "Action": {
             "description": "Action message contains metadata information about a single action present in the external system.",
@@ -1088,9 +1092,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Connectors API",
-    "version": "v2",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/contactcenterinsights__v1.json b/discovery/googleapis/contactcenterinsights__v1.json
index c180a7a..5779b73 100644
--- a/discovery/googleapis/contactcenterinsights__v1.json
+++ b/discovery/googleapis/contactcenterinsights__v1.json
@@ -24,6 +24,13 @@
     "name": "contactcenterinsights",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230702",
+    "rootUrl": "https://contactcenterinsights.googleapis.com/",
+    "servicePath": "",
+    "title": "Contact Center AI Insights API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -1382,8 +1388,6 @@
             }
         }
     },
-    "revision": "20230507",
-    "rootUrl": "https://contactcenterinsights.googleapis.com/",
     "schemas": {
         "GoogleCloudContactcenterinsightsV1Analysis": {
             "description": "The analysis resource.",
@@ -2919,6 +2923,24 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "languageCode": {
+                    "description": "Language of the model.",
+                    "type": "string"
+                },
+                "modelType": {
+                    "description": "Type of the model.",
+                    "enum": [
+                        "MODEL_TYPE_UNSPECIFIED",
+                        "TYPE_V1",
+                        "TYPE_V2"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified model type.",
+                        "Type V1.",
+                        "Type V2."
+                    ],
+                    "type": "string"
+                },
                 "name": {
                     "description": "Immutable. The resource name of the issue model. Format: projects/{project}/locations/{location}/issueModels/{issue_model}",
                     "type": "string"
@@ -3318,7 +3340,7 @@
                     "type": "string"
                 },
                 "inspectTemplate": {
-                    "description": "The fully-qualified DLP inspect template resource name. Format: `projects/{project}/inspectTemplates/{template}`",
+                    "description": "The fully-qualified DLP inspect template resource name. Format: `projects/{project}/locations/{location}/inspectTemplates/{template}`",
                     "type": "string"
                 }
             },
@@ -5033,6 +5055,24 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "languageCode": {
+                    "description": "Language of the model.",
+                    "type": "string"
+                },
+                "modelType": {
+                    "description": "Type of the model.",
+                    "enum": [
+                        "MODEL_TYPE_UNSPECIFIED",
+                        "TYPE_V1",
+                        "TYPE_V2"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified model type.",
+                        "Type V1.",
+                        "Type V2."
+                    ],
+                    "type": "string"
+                },
                 "name": {
                     "description": "Immutable. The resource name of the issue model. Format: projects/{project}/locations/{location}/issueModels/{issue_model}",
                     "type": "string"
@@ -5189,7 +5229,7 @@
                     "type": "string"
                 },
                 "inspectTemplate": {
-                    "description": "The fully-qualified DLP inspect template resource name. Format: `projects/{project}/inspectTemplates/{template}`",
+                    "description": "The fully-qualified DLP inspect template resource name. Format: `projects/{project}/locations/{location}/inspectTemplates/{template}`",
                     "type": "string"
                 }
             },
@@ -5507,9 +5547,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Contact Center AI Insights API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/container__v1.json b/discovery/googleapis/container__v1.json
index 9d28f04..8002967 100644
--- a/discovery/googleapis/container__v1.json
+++ b/discovery/googleapis/container__v1.json
@@ -24,6 +24,12 @@
     "name": "container",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230629",
+    "rootUrl": "https://container.googleapis.com/",
+    "servicePath": "",
+    "title": "Kubernetes Engine API",
+    "version": "v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -195,6 +200,31 @@
                     "resources": {
                         "clusters": {
                             "methods": {
+                                "checkAutopilotCompatibility": {
+                                    "description": "Checks the cluster compatibility with Autopilot mode, and returns a list of compatibility issues.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:checkAutopilotCompatibility",
+                                    "httpMethod": "GET",
+                                    "id": "container.projects.locations.clusters.checkAutopilotCompatibility",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name (project, location, cluster) of the cluster to retrieve. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:checkAutopilotCompatibility",
+                                    "response": {
+                                        "$ref": "CheckAutopilotCompatibilityResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "completeIpRotation": {
                                     "description": "Completes master IP rotation.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:completeIpRotation",
@@ -2485,8 +2515,6 @@
             }
         }
     },
-    "revision": "20230501",
-    "rootUrl": "https://container.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
             "description": "AcceleratorConfig represents a Hardware Accelerator request.",
@@ -2501,6 +2529,10 @@
                     "description": "The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)",
                     "type": "string"
                 },
+                "gpuDriverInstallationConfig": {
+                    "$ref": "GPUDriverInstallationConfig",
+                    "description": "The configuration for auto installation of GPU driver."
+                },
                 "gpuPartitionSize": {
                     "description": "Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).",
                     "type": "string"
@@ -2512,10 +2544,52 @@
             },
             "type": "object"
         },
+        "AdditionalNodeNetworkConfig": {
+            "description": "AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message",
+            "id": "AdditionalNodeNetworkConfig",
+            "properties": {
+                "network": {
+                    "description": "Name of the VPC where the additional interface belongs",
+                    "type": "string"
+                },
+                "subnetwork": {
+                    "description": "Name of the subnetwork where the additional interface belongs",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AdditionalPodNetworkConfig": {
+            "description": "AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message",
+            "id": "AdditionalPodNetworkConfig",
+            "properties": {
+                "maxPodsPerNode": {
+                    "$ref": "MaxPodsConstraint",
+                    "description": "The maximum number of pods per node which use this pod network"
+                },
+                "secondaryPodRange": {
+                    "description": "The name of the secondary range on the subnet which provides IP address for this pod range",
+                    "type": "string"
+                },
+                "subnetwork": {
+                    "description": "Name of the subnetwork where the additional pod network belongs",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "AdditionalPodRangesConfig": {
             "description": "AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message.",
             "id": "AdditionalPodRangesConfig",
             "properties": {
+                "podRangeInfo": {
+                    "description": "Output only. [Output only] Information for additional pod range.",
+                    "items": {
+                        "$ref": "RangeInfo"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
                 "podRangeNames": {
                     "description": "Name for pod secondary ipv4 range which has the actual range defined ahead.",
                     "items": {
@@ -2550,6 +2624,10 @@
                     "$ref": "GcpFilestoreCsiDriverConfig",
                     "description": "Configuration for the GCP Filestore CSI driver."
                 },
+                "gcsFuseCsiDriverConfig": {
+                    "$ref": "GcsFuseCsiDriverConfig",
+                    "description": "Configuration for the Cloud Storage Fuse CSI driver."
+                },
                 "gkeBackupAgentConfig": {
                     "$ref": "GkeBackupAgentConfig",
                     "description": "Configuration for the Backup for GKE agent addon."
@@ -2573,6 +2651,33 @@
             },
             "type": "object"
         },
+        "AdvancedDatapathObservabilityConfig": {
+            "description": "AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath.",
+            "id": "AdvancedDatapathObservabilityConfig",
+            "properties": {
+                "enableMetrics": {
+                    "description": "Expose flow metrics on nodes",
+                    "type": "boolean"
+                },
+                "relayMode": {
+                    "description": "Method used to make Relay available",
+                    "enum": [
+                        "RELAY_MODE_UNSPECIFIED",
+                        "DISABLED",
+                        "INTERNAL_VPC_LB",
+                        "EXTERNAL_LB"
+                    ],
+                    "enumDescriptions": [
+                        "Default value. This shouldn't be used.",
+                        "disabled",
+                        "exposed via internal load balancer",
+                        "exposed via external load balancer"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "AdvancedMachineFeatures": {
             "description": "Specifies options for controlling advanced machine features.",
             "id": "AdvancedMachineFeatures",
@@ -2622,6 +2727,57 @@
                 "enabled": {
                     "description": "Enable Autopilot",
                     "type": "boolean"
+                },
+                "workloadPolicyConfig": {
+                    "$ref": "WorkloadPolicyConfig",
+                    "description": "Workload policy configuration for Autopilot."
+                }
+            },
+            "type": "object"
+        },
+        "AutopilotCompatibilityIssue": {
+            "description": "AutopilotCompatibilityIssue contains information about a specific compatibility issue with Autopilot mode.",
+            "id": "AutopilotCompatibilityIssue",
+            "properties": {
+                "constraintType": {
+                    "description": "The constraint type of the issue.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "The description of the issue.",
+                    "type": "string"
+                },
+                "documentationUrl": {
+                    "description": "A URL to a public documnetation, which addresses resolving this issue.",
+                    "type": "string"
+                },
+                "incompatibilityType": {
+                    "description": "The incompatibility type of this issue.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "INCOMPATIBILITY",
+                        "ADDITIONAL_CONFIG_REQUIRED",
+                        "PASSED_WITH_OPTIONAL_CONFIG"
+                    ],
+                    "enumDescriptions": [
+                        "Default value, should not be used.",
+                        "Indicates that the issue is a known incompatibility between the cluster and Autopilot mode.",
+                        "Indicates the issue is an incompatibility if customers take no further action to resolve.",
+                        "Indicates the issue is not an incompatibility, but depending on the workloads business logic, there is a potential that they won't work on Autopilot."
+                    ],
+                    "type": "string"
+                },
+                "lastObservation": {
+                    "description": "The last time when this issue was observed.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "subjects": {
+                    "description": "The name of the resources which are subject to this issue.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -2647,6 +2803,10 @@
                     "description": "The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.",
                     "type": "string"
                 },
+                "insecureKubeletReadonlyPortEnabled": {
+                    "description": "Enable or disable Kubelet read only port.",
+                    "type": "boolean"
+                },
                 "management": {
                     "$ref": "NodeManagement",
                     "description": "Specifies the node management options for NAP created node-pools."
@@ -2677,6 +2837,22 @@
             },
             "type": "object"
         },
+        "BestEffortProvisioning": {
+            "description": "Best effort provisioning.",
+            "id": "BestEffortProvisioning",
+            "properties": {
+                "enabled": {
+                    "description": "When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes",
+                    "type": "boolean"
+                },
+                "minProvisionNodes": {
+                    "description": "Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "BigQueryDestination": {
             "description": "Parameters for using BigQuery as the destination of resource usage export.",
             "id": "BigQueryDestination",
@@ -2805,6 +2981,24 @@
             },
             "type": "object"
         },
+        "CheckAutopilotCompatibilityResponse": {
+            "description": "CheckAutopilotCompatibilityResponse has a list of compatibility issues.",
+            "id": "CheckAutopilotCompatibilityResponse",
+            "properties": {
+                "issues": {
+                    "description": "The list of issues for the given operation.",
+                    "items": {
+                        "$ref": "AutopilotCompatibilityIssue"
+                    },
+                    "type": "array"
+                },
+                "summary": {
+                    "description": "The summary of the autopilot compatibility response.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CidrBlock": {
             "description": "CidrBlock contains an optional name and one CIDR block.",
             "id": "CidrBlock",
@@ -2928,6 +3122,10 @@
                     "description": "An optional description of this cluster.",
                     "type": "string"
                 },
+                "enableK8sBetaApis": {
+                    "$ref": "K8sBetaAPIConfig",
+                    "description": "Beta APIs Config"
+                },
                 "enableKubernetesAlpha": {
                     "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.",
                     "type": "boolean"
@@ -3095,6 +3293,10 @@
                     "$ref": "ResourceUsageExportConfig",
                     "description": "Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified."
                 },
+                "securityPostureConfig": {
+                    "$ref": "SecurityPostureConfig",
+                    "description": "Enable/Disable Security Posture API features for the cluster."
+                },
                 "selfLink": {
                     "description": "[Output only] Server-defined URL for the resource.",
                     "type": "string"
@@ -3199,6 +3401,25 @@
             },
             "type": "object"
         },
+        "ClusterNetworkPerformanceConfig": {
+            "description": "Configuration of network bandwidth tiers",
+            "id": "ClusterNetworkPerformanceConfig",
+            "properties": {
+                "totalEgressBandwidthTier": {
+                    "description": "Specifies the total network bandwidth tier for NodePools in the cluster.",
+                    "enum": [
+                        "TIER_UNSPECIFIED",
+                        "TIER_1"
+                    ],
+                    "enumDescriptions": [
+                        "Default value",
+                        "Higher bandwidth, actual values based on VM size."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ClusterUpdate": {
             "description": "ClusterUpdate describes an update to the cluster. Exactly one update can be applied to a cluster with each request, so at most one field can be provided.",
             "id": "ClusterUpdate",
@@ -3215,6 +3436,10 @@
                     "$ref": "AuthenticatorGroupsConfig",
                     "description": "The desired authenticator groups config for the cluster."
                 },
+                "desiredAutopilotWorkloadPolicyConfig": {
+                    "$ref": "WorkloadPolicyConfig",
+                    "description": "The desired workload policy configuration for the autopilot cluster."
+                },
                 "desiredBinaryAuthorization": {
                     "$ref": "BinaryAuthorization",
                     "description": "The desired configuration options for the Binary Authorization feature."
@@ -3253,6 +3478,10 @@
                     "$ref": "DNSConfig",
                     "description": "DNSConfig contains clusterDNS config for this cluster."
                 },
+                "desiredEnableFqdnNetworkPolicy": {
+                    "description": "Enable/Disable FQDN Network Policy for the cluster.",
+                    "type": "boolean"
+                },
                 "desiredEnablePrivateEndpoint": {
                     "description": "Enable/Disable private endpoint for the cluster's master.",
                     "type": "boolean"
@@ -3281,6 +3510,10 @@
                     "$ref": "IntraNodeVisibilityConfig",
                     "description": "The desired config of Intra-node visibility."
                 },
+                "desiredK8sBetaApis": {
+                    "$ref": "K8sBetaAPIConfig",
+                    "description": "Desired Beta APIs to be enabled for cluster."
+                },
                 "desiredL4ilbSubsettingConfig": {
                     "$ref": "ILBSubsettingConfig",
                     "description": "The desired L4 Internal Load Balancer Subsetting configuration."
@@ -3320,6 +3553,10 @@
                     "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.",
                     "type": "string"
                 },
+                "desiredNetworkPerformanceConfig": {
+                    "$ref": "ClusterNetworkPerformanceConfig",
+                    "description": "The desired network performance config."
+                },
                 "desiredNodePoolAutoConfigNetworkTags": {
                     "$ref": "NetworkTags",
                     "description": "The desired network tags that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
@@ -3372,6 +3609,10 @@
                     "$ref": "ResourceUsageExportConfig",
                     "description": "The desired configuration for exporting resource usage."
                 },
+                "desiredSecurityPostureConfig": {
+                    "$ref": "SecurityPostureConfig",
+                    "description": "Enable/Disable Security Posture API features for the cluster."
+                },
                 "desiredServiceExternalIpsConfig": {
                     "$ref": "ServiceExternalIPsConfig",
                     "description": "ServiceExternalIPsConfig specifies the config for the use of Services with ExternalIPs field."
@@ -3402,6 +3643,10 @@
                     "$ref": "WorkloadIdentityConfig",
                     "description": "Configuration for Workload Identity."
                 },
+                "enableK8sBetaApis": {
+                    "$ref": "K8sBetaAPIConfig",
+                    "description": "Kubernetes open source beta apis enabled on the cluster. Only beta apis"
+                },
                 "etag": {
                     "description": "The current etag of the cluster. If an etag is provided and does not match the current etag of the cluster, update will be blocked and an ABORTED error will be returned.",
                     "type": "string"
@@ -3545,12 +3790,14 @@
                     "enum": [
                         "PROVIDER_UNSPECIFIED",
                         "PLATFORM_DEFAULT",
-                        "CLOUD_DNS"
+                        "CLOUD_DNS",
+                        "KUBE_DNS"
                     ],
                     "enumDescriptions": [
                         "Default value",
                         "Use GKE default DNS provider(kube-dns) for DNS resolution.",
-                        "Use CloudDNS for DNS resolution."
+                        "Use CloudDNS for DNS resolution.",
+                        "Use KubeDNS for DNS resolution."
                     ],
                     "type": "string"
                 },
@@ -3711,6 +3958,29 @@
             },
             "type": "object"
         },
+        "GPUDriverInstallationConfig": {
+            "description": "GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed.",
+            "id": "GPUDriverInstallationConfig",
+            "properties": {
+                "gpuDriverVersion": {
+                    "description": "Mode for how the GPU driver is installed.",
+                    "enum": [
+                        "GPU_DRIVER_VERSION_UNSPECIFIED",
+                        "INSTALLATION_DISABLED",
+                        "DEFAULT",
+                        "LATEST"
+                    ],
+                    "enumDescriptions": [
+                        "Default value is to not install any GPU driver.",
+                        "Disable GPU driver auto installation and needs manual installation",
+                        "\"Default\" GPU driver in COS and Ubuntu.",
+                        "\"Latest\" GPU driver in COS."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GPUSharingConfig": {
             "description": "GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators.",
             "id": "GPUSharingConfig",
@@ -3791,6 +4061,17 @@
             },
             "type": "object"
         },
+        "GcsFuseCsiDriverConfig": {
+            "description": "Configuration for the Cloud Storage Fuse CSI driver.",
+            "id": "GcsFuseCsiDriverConfig",
+            "properties": {
+                "enabled": {
+                    "description": "Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "GetJSONWebKeysResponse": {
             "description": "GetJSONWebKeysResponse is a valid JSON Web Key Set as specififed in rfc 7517",
             "id": "GetJSONWebKeysResponse",
@@ -3952,6 +4233,12 @@
                     "description": "Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.",
                     "type": "boolean"
                 },
+                "defaultPodIpv4RangeUtilization": {
+                    "description": "Output only. [Output only] The utilization of the cluster default IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.",
+                    "format": "double",
+                    "readOnly": true,
+                    "type": "number"
+                },
                 "ipv6AccessType": {
                     "description": "The ipv6 access type (internal or external) when create_subnetwork is true",
                     "enum": [
@@ -4098,6 +4385,20 @@
             },
             "type": "object"
         },
+        "K8sBetaAPIConfig": {
+            "description": "K8sBetaAPIConfig , configuration for beta APIs",
+            "id": "K8sBetaAPIConfig",
+            "properties": {
+                "enabledApis": {
+                    "description": "Enabled k8s beta APIs.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "KubernetesDashboard": {
             "description": "Configuration for the Kubernetes Dashboard.",
             "id": "KubernetesDashboard",
@@ -4498,6 +4799,10 @@
             "description": "MonitoringConfig is cluster monitoring configuration.",
             "id": "MonitoringConfig",
             "properties": {
+                "advancedDatapathObservabilityConfig": {
+                    "$ref": "AdvancedDatapathObservabilityConfig",
+                    "description": "Configuration of Advanced Datapath Observability features."
+                },
                 "componentConfig": {
                     "$ref": "MonitoringComponentConfig",
                     "description": "Monitoring components configuration"
@@ -4535,6 +4840,10 @@
                     "$ref": "DNSConfig",
                     "description": "DNSConfig contains clusterDNS config for this cluster."
                 },
+                "enableFqdnNetworkPolicy": {
+                    "description": "Whether FQDN Network Policy is enabled on this cluster.",
+                    "type": "boolean"
+                },
                 "enableIntraNodeVisibility": {
                     "description": "Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.",
                     "type": "boolean"
@@ -4543,6 +4852,10 @@
                     "description": "Whether L4ILB Subsetting is enabled for this cluster.",
                     "type": "boolean"
                 },
+                "enableMultiNetworking": {
+                    "description": "Whether multi-networking is enabled for this cluster.",
+                    "type": "boolean"
+                },
                 "gatewayApiConfig": {
                     "$ref": "GatewayAPIConfig",
                     "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster."
@@ -4551,6 +4864,10 @@
                     "description": "Output only. The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network",
                     "type": "string"
                 },
+                "networkPerformanceConfig": {
+                    "$ref": "ClusterNetworkPerformanceConfig",
+                    "description": "Network bandwidth tier configuration."
+                },
                 "privateIpv6GoogleAccess": {
                     "description": "The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)",
                     "enum": [
@@ -4645,6 +4962,38 @@
             },
             "type": "object"
         },
+        "NodeAffinity": {
+            "description": "Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).",
+            "id": "NodeAffinity",
+            "properties": {
+                "key": {
+                    "description": "Key for NodeAffinity.",
+                    "type": "string"
+                },
+                "operator": {
+                    "description": "Operator for NodeAffinity.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "IN",
+                        "NOT_IN"
+                    ],
+                    "enumDescriptions": [
+                        "Invalid or unspecified affinity operator.",
+                        "Affinity operator.",
+                        "Anti-affinity operator."
+                    ],
+                    "type": "string"
+                },
+                "values": {
+                    "description": "Values for NodeAffinity.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "NodeConfig": {
             "description": "Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead.",
             "id": "NodeConfig",
@@ -4778,6 +5127,10 @@
                     "$ref": "ShieldedInstanceConfig",
                     "description": "Shielded Instance options."
                 },
+                "soleTenantConfig": {
+                    "$ref": "SoleTenantConfig",
+                    "description": "Parameters for node pools to be backed by shared sole tenant node groups."
+                },
                 "spot": {
                     "description": "Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag.",
                     "type": "boolean"
@@ -4838,6 +5191,10 @@
                     "description": "Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * \"none\": the default, which represents the existing scheduling behavior. * \"static\": allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is 'none' if unspecified.",
                     "type": "string"
                 },
+                "insecureKubeletReadonlyPortEnabled": {
+                    "description": "Enable or disable Kubelet read only port.",
+                    "type": "boolean"
+                },
                 "podPidsLimit": {
                     "description": "Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304.",
                     "format": "int64",
@@ -4883,6 +5240,20 @@
             "description": "Parameters for node pool-level network config.",
             "id": "NodeNetworkConfig",
             "properties": {
+                "additionalNodeNetworkConfigs": {
+                    "description": "We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface",
+                    "items": {
+                        "$ref": "AdditionalNodeNetworkConfig"
+                    },
+                    "type": "array"
+                },
+                "additionalPodNetworkConfigs": {
+                    "description": "We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node",
+                    "items": {
+                        "$ref": "AdditionalPodNetworkConfig"
+                    },
+                    "type": "array"
+                },
                 "createPodRange": {
                     "description": "Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.",
                     "type": "boolean"
@@ -4903,6 +5274,12 @@
                     "description": "The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.",
                     "type": "string"
                 },
+                "podIpv4RangeUtilization": {
+                    "description": "Output only. [Output only] The utilization of the IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.",
+                    "format": "double",
+                    "readOnly": true,
+                    "type": "number"
+                },
                 "podRange": {
                     "description": "The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.",
                     "type": "string"
@@ -4918,6 +5295,10 @@
                     "$ref": "NodePoolAutoscaling",
                     "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
                 },
+                "bestEffortProvisioning": {
+                    "$ref": "BestEffortProvisioning",
+                    "description": "Enable best effort provisioning for nodes"
+                },
                 "conditions": {
                     "description": "Which conditions caused the current node pool state.",
                     "items": {
@@ -5337,6 +5718,10 @@
             "description": "PlacementPolicy defines the placement policy used by the node pool.",
             "id": "PlacementPolicy",
             "properties": {
+                "policyName": {
+                    "description": "If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned.",
+                    "type": "string"
+                },
                 "type": {
                     "description": "The type of placement.",
                     "enum": [
@@ -5432,6 +5817,24 @@
             },
             "type": "object"
         },
+        "RangeInfo": {
+            "description": "RangeInfo contains the range name and the range utilization by this cluster.",
+            "id": "RangeInfo",
+            "properties": {
+                "rangeName": {
+                    "description": "Output only. [Output only] Name of a range.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "utilization": {
+                    "description": "Output only. [Output only] The utilization of the range.",
+                    "format": "double",
+                    "readOnly": true,
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
         "RecurringTimeWindow": {
             "description": "Represents an arbitrary window of time that recurs.",
             "id": "RecurringTimeWindow",
@@ -5698,6 +6101,41 @@
             },
             "type": "object"
         },
+        "SecurityPostureConfig": {
+            "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
+            "id": "SecurityPostureConfig",
+            "properties": {
+                "mode": {
+                    "description": "Sets which mode to use for Security Posture features.",
+                    "enum": [
+                        "MODE_UNSPECIFIED",
+                        "DISABLED",
+                        "BASIC"
+                    ],
+                    "enumDescriptions": [
+                        "Default value not specified.",
+                        "Disables Security Posture features on the cluster.",
+                        "Applies Security Posture features on the cluster."
+                    ],
+                    "type": "string"
+                },
+                "vulnerabilityMode": {
+                    "description": "Sets which mode to use for vulnerability scanning.",
+                    "enum": [
+                        "VULNERABILITY_MODE_UNSPECIFIED",
+                        "VULNERABILITY_DISABLED",
+                        "VULNERABILITY_BASIC"
+                    ],
+                    "enumDescriptions": [
+                        "Default value not specified.",
+                        "Disables vulnerability scanning on the cluster.",
+                        "Applies basic vulnerability scanning on the cluster."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ServerConfig": {
             "description": "Kubernetes Engine service configuration.",
             "id": "ServerConfig",
@@ -6141,6 +6579,20 @@
             },
             "type": "object"
         },
+        "SoleTenantConfig": {
+            "description": "SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool.",
+            "id": "SoleTenantConfig",
+            "properties": {
+                "nodeAffinities": {
+                    "description": "NodeAffinities used to match to a shared sole tenant node group.",
+                    "items": {
+                        "$ref": "NodeAffinity"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "StandardRolloutPolicy": {
             "description": "Standard rollout policy is the default policy for blue-green.",
             "id": "StandardRolloutPolicy",
@@ -6731,9 +7183,17 @@
                 }
             },
             "type": "object"
+        },
+        "WorkloadPolicyConfig": {
+            "description": "WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters.",
+            "id": "WorkloadPolicyConfig",
+            "properties": {
+                "allowNetAdmin": {
+                    "description": "If true, workloads can use NET_ADMIN capability.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Kubernetes Engine API",
-    "version": "v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/containeranalysis__v1.json b/discovery/googleapis/containeranalysis__v1.json
index 5968ed3..4fe933b 100644
--- a/discovery/googleapis/containeranalysis__v1.json
+++ b/discovery/googleapis/containeranalysis__v1.json
@@ -24,6 +24,13 @@
     "name": "containeranalysis",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230612",
+    "rootUrl": "https://containeranalysis.googleapis.com/",
+    "servicePath": "",
+    "title": "Container Analysis API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -753,8 +759,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://containeranalysis.googleapis.com/",
     "schemas": {
         "AliasContext": {
             "description": "An alias to a repo revision.",
@@ -1959,7 +1963,7 @@
                     "type": "string"
                 },
                 "logsBucket": {
-                    "description": "Google Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
+                    "description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
                     "type": "string"
                 },
                 "name": {
@@ -2193,7 +2197,7 @@
                     "type": "array"
                 },
                 "logStreamingOption": {
-                    "description": "Option to define build log streaming behavior to Google Cloud Storage.",
+                    "description": "Option to define build log streaming behavior to Cloud Storage.",
                     "enum": [
                         "STREAM_DEFAULT",
                         "STREAM_ON",
@@ -2201,8 +2205,8 @@
                     ],
                     "enumDescriptions": [
                         "Service may automatically determine build log streaming behavior.",
-                        "Build logs should be streamed to Google Cloud Storage.",
-                        "Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed."
+                        "Build logs should be streamed to Cloud Storage.",
+                        "Build logs should not be streamed to Cloud Storage; they will be written when the build is completed."
                     ],
                     "type": "string"
                 },
@@ -2748,11 +2752,11 @@
                 },
                 "storageSource": {
                     "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource",
-                    "description": "If provided, get the source from this location in Google Cloud Storage."
+                    "description": "If provided, get the source from this location in Cloud Storage."
                 },
                 "storageSourceManifest": {
                     "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest",
-                    "description": "If provided, get the source from this manifest in Google Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher)."
+                    "description": "If provided, get the source from this manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher)."
                 }
             },
             "type": "object"
@@ -2785,40 +2789,40 @@
             "type": "object"
         },
         "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource": {
-            "description": "Location of the source in an archive file in Google Cloud Storage.",
+            "description": "Location of the source in an archive file in Cloud Storage.",
             "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource",
             "properties": {
                 "bucket": {
-                    "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+                    "description": "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.",
+                    "description": "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 zipped (`.zip`) or gzipped archive file (`.tar.gz`) containing source to build.",
+                    "description": "Cloud Storage object containing the source. This object must be a zipped (`.zip`) or gzipped archive file (`.tar.gz`) containing source to build.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
         "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest": {
-            "description": "Location of the source manifest in Google Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).",
+            "description": "Location of the source manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).",
             "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest",
             "properties": {
                 "bucket": {
-                    "description": "Google Cloud Storage bucket containing the source manifest (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+                    "description": "Cloud Storage bucket containing the source manifest (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.",
+                    "description": "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 manifest. This object must be a JSON file.",
+                    "description": "Cloud Storage object containing the source manifest. This object must be a JSON file.",
                     "type": "string"
                 }
             },
@@ -5460,9 +5464,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Container Analysis API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/content__v2.1.json b/discovery/googleapis/content__v2.1.json
index 7ac547f..c18f51c 100644
--- a/discovery/googleapis/content__v2.1.json
+++ b/discovery/googleapis/content__v2.1.json
@@ -24,6 +24,12 @@
     "name": "content",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230704",
+    "rootUrl": "https://shoppingcontent.googleapis.com/",
+    "servicePath": "content/v2.1/",
+    "title": "Content API for Shopping",
+    "version": "v2.1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "accounts": {
             "methods": {
@@ -1820,38 +1825,6 @@
                 }
             }
         },
-        "customers": {
-            "methods": {
-                "create": {
-                    "description": "Allows uploading one customer information entry. Adding a customer with loyalty data enables the customer to see personalized loyalty annotations on search. Uploading a previously existing customer will overwrite the old entry.",
-                    "flatPath": "{merchantId}/customers",
-                    "httpMethod": "POST",
-                    "id": "content.customers.create",
-                    "parameterOrder": [
-                        "merchantId"
-                    ],
-                    "parameters": {
-                        "merchantId": {
-                            "description": "Required. The ID of the account that owns the customer information.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "{merchantId}/customers",
-                    "request": {
-                        "$ref": "Customer"
-                    },
-                    "response": {
-                        "$ref": "Customer"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/content"
-                    ]
-                }
-            }
-        },
         "datafeeds": {
             "methods": {
                 "custombatch": {
@@ -4755,6 +4728,52 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/content"
                     ]
+                },
+                "list": {
+                    "description": "List all promotions from your Merchant Center account.",
+                    "flatPath": "{merchantId}/promotions",
+                    "httpMethod": "GET",
+                    "id": "content.promotions.list",
+                    "parameterOrder": [
+                        "merchantId"
+                    ],
+                    "parameters": {
+                        "countryCode": {
+                            "description": "[CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (for example, \"US\"), used as a filter on promotions target country.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "languageCode": {
+                            "description": "The two-letter ISO 639-1 language code associated with the promotions, used as a filter.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "merchantId": {
+                            "description": "Required. The ID of the account that contains the collection.",
+                            "format": "int64",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The maximum number of promotions to return. The service may return fewer than this value. If unspecified, at most 50 labels will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "pageToken": {
+                            "description": "A page token, received from a previous `ListPromotion` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListPromotion` must match the call that provided the page token.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "{merchantId}/promotions",
+                    "response": {
+                        "$ref": "ListPromotionResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/content"
+                    ]
                 }
             }
         },
@@ -6255,8 +6274,6 @@
             }
         }
     },
-    "revision": "20230510",
-    "rootUrl": "https://shoppingcontent.googleapis.com/",
     "schemas": {
         "Account": {
             "description": "Account data. After the creation of a new account it may take a few minutes before it's fully operational. The methods delete, insert, and update require the admin role.",
@@ -8208,32 +8225,6 @@
             },
             "type": "object"
         },
-        "Customer": {
-            "description": "The object representing a customer to update data for. Includes a customer identifier (such as email address) and any associated metadata to add. LoyaltyData triggers adding customer data for the purpose of loyalty personalization.",
-            "id": "Customer",
-            "properties": {
-                "emailAddress": {
-                    "description": "The customer's email address. No extra string processing needed.",
-                    "type": "string"
-                },
-                "loyaltyData": {
-                    "$ref": "CustomerLoyaltyData",
-                    "description": "Loyalty data associated with the customer."
-                }
-            },
-            "type": "object"
-        },
-        "CustomerLoyaltyData": {
-            "description": "The loyalty data of the customer.",
-            "id": "CustomerLoyaltyData",
-            "properties": {
-                "loyaltyTier": {
-                    "description": "The tier information for the given user. Can be an empty string.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "CustomerReturnReason": {
             "id": "CustomerReturnReason",
             "properties": {
@@ -9892,6 +9883,24 @@
             },
             "type": "object"
         },
+        "ListPromotionResponse": {
+            "description": "Response message for Promotions.List method.",
+            "id": "ListPromotionResponse",
+            "properties": {
+                "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"
+                },
+                "promotions": {
+                    "description": "List of all available promotions for the merchant.",
+                    "items": {
+                        "$ref": "Promotion"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ListRegionsResponse": {
             "description": "Response message for the `ListRegions` method.",
             "id": "ListRegionsResponse",
@@ -13388,6 +13397,13 @@
                     "description": "URL for the canonical version of your item's landing page.",
                     "type": "string"
                 },
+                "certifications": {
+                    "description": "Product [certification](https://support.google.com/merchants/answer/13528839), introduced for EU energy efficiency labeling compliance using the [EU EPREL](https://eprel.ec.europa.eu/screen/home) database.",
+                    "items": {
+                        "$ref": "ProductCertification"
+                    },
+                    "type": "array"
+                },
                 "channel": {
                     "description": "Required. The item's channel (online or local). Acceptable values are: - \"`local`\" - \"`online`\" ",
                     "type": "string"
@@ -13447,7 +13463,7 @@
                     "type": "string"
                 },
                 "disclosureDate": {
-                    "description": "The date time when an offer becomes visible in search results across Google’s YouTube surfaces, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format. See [Disclosure date]( https://support.google.com/merchants/answer/13034208) for more information.",
+                    "description": "The date time when an offer becomes visible in search results across Google’s YouTube surfaces, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format. See [Disclosure date](https://support.google.com/merchants/answer/13034208) for more information.",
                     "type": "string"
                 },
                 "displayAdsId": {
@@ -13792,6 +13808,25 @@
             },
             "type": "object"
         },
+        "ProductCertification": {
+            "description": "Product [certification](https://support.google.com/merchants/answer/13528839), introduced for EU energy efficiency labeling compliance using the [EU EPREL](https://eprel.ec.europa.eu/screen/home) database.",
+            "id": "ProductCertification",
+            "properties": {
+                "certificationAuthority": {
+                    "description": "The certification authority, for example \"European_Commission\". Maximum length is 2000 characters.",
+                    "type": "string"
+                },
+                "certificationCode": {
+                    "description": "The certification code, for eaxample \"123456\". Maximum length is 2000 characters.",
+                    "type": "string"
+                },
+                "certificationName": {
+                    "description": "The name of the certification, for example \"EPREL\". Maximum length is 2000 characters.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ProductCluster": {
             "description": "Product cluster fields. A product cluster is a grouping for different offers that represent the same product. Values are only set for fields requested explicitly in the request's search query.",
             "id": "ProductCluster",
@@ -15543,10 +15578,12 @@
                     "description": "Required. Type of the interaction that is reported, for example INTERACTION_CLICK.",
                     "enum": [
                         "INTERACTION_TYPE_UNSPECIFIED",
+                        "INTERACTION_DISMISS",
                         "INTERACTION_CLICK"
                     ],
                     "enumDescriptions": [
                         "Default value. If provided, the service will throw ApiError with description \"Required parameter: interactionType\".",
+                        "When a recommendation is dismissed.",
                         "When a recommendation is clicked."
                     ],
                     "type": "string"
@@ -16936,6 +16973,10 @@
                     "$ref": "ServiceStoreConfigCutoffConfigLocalCutoffTime",
                     "description": "Time in hours and minutes in the local timezone when local delivery ends."
                 },
+                "noDeliveryPostCutoff": {
+                    "description": "Merchants can opt-out of showing n+1 day local delivery when they have a shipping service configured to n day local delivery. For example, if the shipping service defines same-day delivery, and it's past the cut-off, setting this field to `true` results in the calculated shipping service rate returning `NO_DELIVERY_POST_CUTOFF`. In the same example, setting this field to `false` results in the calculated shipping time being one day. This is only for local delivery.",
+                    "type": "boolean"
+                },
                 "storeCloseOffsetHours": {
                     "description": "Represents cutoff time as the number of hours before store closing. Mutually exclusive with other fields (hour and minute).",
                     "format": "int64",
@@ -18128,8 +18169,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "content/v2.1/",
-    "title": "Content API for Shopping",
-    "version": "v2.1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/contentwarehouse__v1.json b/discovery/googleapis/contentwarehouse__v1.json
index d8b01fa..e6a0298 100644
--- a/discovery/googleapis/contentwarehouse__v1.json
+++ b/discovery/googleapis/contentwarehouse__v1.json
@@ -24,6 +24,13 @@
     "name": "contentwarehouse",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230627",
+    "rootUrl": "https://contentwarehouse.googleapis.com/",
+    "servicePath": "",
+    "title": "Document AI Warehouse API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "methods": {
@@ -165,6 +171,31 @@
             "resources": {
                 "locations": {
                     "methods": {
+                        "getStatus": {
+                            "description": "Get the project status.",
+                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:getStatus",
+                            "httpMethod": "GET",
+                            "id": "contentwarehouse.projects.locations.getStatus",
+                            "parameterOrder": [
+                                "location"
+                            ],
+                            "parameters": {
+                                "location": {
+                                    "description": "Required. The location to be queried Format: projects/{project_number}/locations/{location}.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+location}:getStatus",
+                            "response": {
+                                "$ref": "GoogleCloudContentwarehouseV1ProjectStatus"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "initialize": {
                             "description": "Provisions resources for given tenant project. Returns a long running operation.",
                             "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:initialize",
@@ -1101,8 +1132,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://contentwarehouse.googleapis.com/",
     "schemas": {
         "AbuseiamAbuseType": {
             "id": "AbuseiamAbuseType",
@@ -3626,7 +3655,11 @@
                         "MEET_AFFINITY",
                         "PMW_TI_AFFINITY",
                         "DRIVE_SEARCH_FILTER_PERSON_ONLY",
-                        "ACCESSIBILITY_TRACKER_AFFINITY"
+                        "ACCESSIBILITY_TRACKER_AFFINITY",
+                        "PLX_DATASOURCE_AFFINITY",
+                        "DUCKIEWEB_AFFINITY",
+                        "MEET_CALLING_AFFINITY",
+                        "MATTERSPACE_AFFINITY"
                     ],
                     "enumDescriptions": [
                         "",
@@ -3879,6 +3912,10 @@
                         "",
                         "",
                         "",
+                        "",
+                        "",
+                        "",
+                        "",
                         ""
                     ],
                     "type": "string"
@@ -3994,6 +4031,18 @@
                     "description": "Store the app unique id endpoint. This will be passed over to app to fulfill the action. For example, app_unique_id for Whatsapp will be \"11234567890@s.whatsapp.net\"",
                     "type": "string"
                 },
+                "contactInfoSource": {
+                    "description": "Where this contact info was retrieved from. Note: only added for Assistant usage, and will not be populated by PAPI. This is due to the coupling between Assistant Proto, and PAPI proto. (//depot/google3/quality/qrewrite/servlets/proto/focus_name.proto)",
+                    "enum": [
+                        "SOURCE_UNKNOWN",
+                        "APP_SEARCH"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "The contact info came from AppSearch."
+                    ],
+                    "type": "string"
+                },
                 "displayAppUniqueId": {
                     "description": "Store third party endpoint that is displayed to users. For example, display_app_unique_id for Whatsapp will be \"Message +11234567890\".",
                     "type": "string"
@@ -4360,10 +4409,6 @@
             "description": "Contact-level people-prompts settings and contact-level connection reminders. Part of go/people-prompts.",
             "id": "AppsPeopleOzExternalMergedpeopleapiConnectionReminder",
             "properties": {
-                "contactPromptSettings": {
-                    "$ref": "SocialGraphApiProtoContactPromptSettings",
-                    "description": "Contains the Contact level settings that will affect all reminders."
-                },
                 "metadata": {
                     "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata"
                 },
@@ -4441,6 +4486,19 @@
             },
             "type": "object"
         },
+        "AppsPeopleOzExternalMergedpeopleapiContactPromptSettingsInfo": {
+            "description": "Contact level People Prompt settings. This message is a pure wrapper of the shared ContactPromptSettings message so that it can be a top-level person field. No other fields should be added to the message.",
+            "id": "AppsPeopleOzExternalMergedpeopleapiContactPromptSettingsInfo",
+            "properties": {
+                "contactPromptSettings": {
+                    "$ref": "SocialGraphApiProtoContactPromptSettings"
+                },
+                "metadata": {
+                    "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata"
+                }
+            },
+            "type": "object"
+        },
         "AppsPeopleOzExternalMergedpeopleapiContactStateInfo": {
             "description": "Contact state and related metadata. See go/fbs-contacts-trash. This message is a pure wrapper of the shared ContactState message so that it can be a top-level person field. No other fields should be added to the message.",
             "id": "AppsPeopleOzExternalMergedpeopleapiContactStateInfo",
@@ -6530,6 +6588,12 @@
                     },
                     "type": "array"
                 },
+                "contactPromptSettingsInfo": {
+                    "items": {
+                        "$ref": "AppsPeopleOzExternalMergedpeopleapiContactPromptSettingsInfo"
+                    },
+                    "type": "array"
+                },
                 "contactStateInfo": {
                     "description": "Contact state and related metadata. See go/fbs-contacts-trash. If this field was requested but is not set on the Person then the contact is in the DEFAULT contact state. This field is read-only, and should not be set on a mutate (e.g. UpdatePerson) call. Clients must call the explicit APIs (e.g. UntrashPerson) to change contact state.",
                     "items": {
@@ -8944,30 +9008,6 @@
             },
             "type": "object"
         },
-        "AssistantApiAccessControlOutput": {
-            "description": "Access settings for providers.",
-            "id": "AssistantApiAccessControlOutput",
-            "properties": {
-                "allowNonUnicornUserAccessYoutubeKids": {
-                    "description": "If true, the user consented to use YouTube Kids as a video provider for non-unicorn users(voice recognized adults or guest). Unicorn accounts shouldn’t use this setting.",
-                    "type": "boolean"
-                },
-                "guestAccessOnYoutube": {
-                    "enum": [
-                        "UNKNOWN_GUEST_ACCESS",
-                        "USE_DEFAULT_ACCOUNT_FOR_GUEST",
-                        "DISABLED_FOR_GUEST"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Guests can access content using linked users' account.",
-                        "No access for guests."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "AssistantApiActionV2SupportedFeatures": {
             "description": "The features supported by the ActionV2 protocol. Note that after we move on to ConversationProto for all surfaces we can remove this message.",
             "id": "AssistantApiActionV2SupportedFeatures",
@@ -9111,6 +9151,10 @@
                         "Enable app control SD-dependent capabilities."
                     ],
                     "type": "string"
+                },
+                "sendMessageSuppressed": {
+                    "description": "If true, disable send message AppControl/SD flow. This is needed to suppress the feature for specific device. If we decide to turn down this feature for all devices, then this field will become obsolete and should be removed. See context in b/275727627.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -9351,7 +9395,6 @@
                     "type": "array"
                 },
                 "supportsDuoEmailEndpoint": {
-                    "description": "Whether the surface supports Duo calling email endpoints.",
                     "type": "boolean"
                 }
             },
@@ -9576,6 +9619,7 @@
                             "AUTO_ROTATE",
                             "AUTO_ROTATE_FACE_DETECTION",
                             "BACKUP",
+                            "BATTERY_HEALTH",
                             "BATTERY_LEVEL",
                             "BATTERY_LOW",
                             "BATTERY_PERCENTAGE",
@@ -9647,6 +9691,7 @@
                             "HOT_SPOT",
                             "HOTSPOT_TETHERING",
                             "HOT_WORD",
+                            "HUB_MODE",
                             "IP_ADDRESS",
                             "IMPROVE_LOCATION_ACCURACY",
                             "JUMP_TO_CAMERA",
@@ -9801,6 +9846,16 @@
                             "TIPS_AND_SUPPORT",
                             "SCREEN_ATTENTION",
                             "BLUETOOTH_TETHERING",
+                            "ALL_APPS",
+                            "EXTEND_UNLOCK",
+                            "CLEAR_CALLING",
+                            "GOOGLE_SETTINGS",
+                            "APP_LANGUAGES",
+                            "SIM_STATUS",
+                            "MICROPHONE_PERMISSIONS",
+                            "GOOGLE_PLAY_UPDATE",
+                            "ADD_GOOGLE_ACCOUNT",
+                            "ASSISTANT_SPOKEN_NOTIFICATIONS",
                             "ABOUT_PHONE",
                             "ACCOUNTS",
                             "APPLICATION",
@@ -9889,6 +9944,7 @@
                             "",
                             "",
                             "",
+                            "Denotes if the battery health is normal / reduced / unknown.",
                             "",
                             "",
                             "",
@@ -9960,6 +10016,7 @@
                             "Toggle for internet sharing via WiFi.",
                             "Common settings page for internet sharing via various means.",
                             "",
+                            "See go/hubmodesettings-PRD.",
                             "Show my IP address",
                             "",
                             "",
@@ -10114,6 +10171,16 @@
                             "Settings > Tips & support",
                             "Display > Screen timeout > Screen attention",
                             "",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "Permission Manager > Microphone",
+                            "",
+                            "",
+                            "Settings for assistant to announce messages/notifications",
                             "Begin of NGA proto consistence",
                             "",
                             "",
@@ -11324,6 +11391,284 @@
             },
             "type": "object"
         },
+        "AssistantApiCoreTypesGovernedSurfaceIdentity": {
+            "description": "The set of information that helps the server identify the surface. This replaces the User-Agent string within the Assistant Server. Note: The SurfaceIdentity proto should only be used to derive the capabilities of a surface. It should not be accessed outside of the CapabilityBuilder or CapabilityChecker. NEXT ID: 6 LINT.IfChange",
+            "id": "AssistantApiCoreTypesGovernedSurfaceIdentity",
+            "properties": {
+                "deviceId": {
+                    "$ref": "AssistantApiCoreTypesDeviceId",
+                    "description": "The identifier of the device."
+                },
+                "legacySurfaceType": {
+                    "description": "DEPRECATED: The legacy device's surface type enum. NOTE: Prefer using the ontological `surface_type` field above. If you need to access the legacy surface type, please file a bug and add it in your code to migrate to ontological surface type.",
+                    "enum": [
+                        "UNKNOWN",
+                        "ANDROID_ALLO",
+                        "ANDROID_AUTO",
+                        "ANDROID_THINGS_CUBE",
+                        "ANDROID_THINGS_JASPER",
+                        "ANDROID_TV",
+                        "ANDROID_TV_KIDS",
+                        "ANDROID_WEAR",
+                        "AR_GLASSES",
+                        "ASSISTANT_SDK",
+                        "AUDIOWEAR",
+                        "BUBBLE_CHARACTERS_IOS",
+                        "CAPABILITY_BASED_SURFACE",
+                        "CHROMECAST_ASSISTANT",
+                        "CHROMECAST_MANHATTAN",
+                        "CHROMECAST_SEARCH",
+                        "CLOUD_DEVICE",
+                        "COMPANION_SCREEN",
+                        "DYNAMITE_WEB",
+                        "ENSEMBLE",
+                        "EYESFREE_AGSA",
+                        "EYESFREE_GMM",
+                        "GBOARD",
+                        "GLASS",
+                        "GOOGLE_HOME",
+                        "HANGOUTS_CHATBOT",
+                        "IOS_ALLO",
+                        "IOS_GSA",
+                        "IOS_WEAR",
+                        "LIBASSISTANT",
+                        "LINE_CHATBOT",
+                        "MULTIMODAL_AGSA",
+                        "NON_ASSISTANT_SURFACE",
+                        "OPA_AGSA",
+                        "OPA_AGSA_CHROME_OS",
+                        "OPA_ANDROID_AUTO",
+                        "OPA_ANDROID_LITE",
+                        "OPA_ANDROID_SCREENLESS",
+                        "OPA_ANDROID_SMART_DISPLAY",
+                        "OPA_ANDROID_TABLET",
+                        "OPA_CROS",
+                        "OPA_GACS",
+                        "OPA_IOS",
+                        "OPA_IOS_SCREENLESS",
+                        "OPA_KAIOS",
+                        "OPA_MOBILE_WEB",
+                        "RTOS_PHONE",
+                        "SMS_CHATBOT",
+                        "TELEGRAM_CHATBOT",
+                        "TELEPHONE_ASSISTANT",
+                        "VERILY_ONDUO",
+                        "YOUTUBE_APP",
+                        "AGSA_BISTO_FOR_EVAL",
+                        "COGSWORTH_FOR_EVAL",
+                        "LOCKHART_MIC_FOR_EVAL",
+                        "OPA_ANDROID_AUTO_EMBEDDED_FAKE",
+                        "SPARK",
+                        "WALLE",
+                        "UNIT_TESTING"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "Deprecated (never used). Use OPA_ANDROID_AUTO instead.",
+                        "Assistant on small screen stationary device.",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "Assistant on AR Glasses with both visual and audio experiences. Ask ar-assistant@ for details.",
+                        "For Assistant SDK gRPC client.",
+                        "",
+                        "go/assistant-lamda-overview-characters",
+                        "Surface for capability based testing.",
+                        "For chrome cast assistant web app.",
+                        "For chrome cast with assistant + screen (e.g., Google Nest Hub).",
+                        "",
+                        "Virtual device for event-based triggering, e.g. executing time",
+                        "scheduled routines: go/routine-cloud-ex For Quartz.",
+                        "",
+                        "",
+                        "Deprecated. Please use OPA_ANDROID_SCREENLESS.",
+                        "",
+                        "For Gboard app",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "For standalone libassistant devices.",
+                        "LINE 3P messaging app",
+                        "Deprecated.",
+                        "Surfaces that do not speak to the Assistant, i.e. web HQ",
+                        "Assistant on Android phones accessed through the Google App (velvet). This represents neither all of the assistant on android phones (ANDROID_ALLO, VERILY_ONDUO, etc.) nor all of the assistant built on top of AGSA (ANDROID_WEAR, OPA_ANDROID_SCREENLESS, OPA_AGSA_CHROME_OS, etc.).",
+                        "Deprecated. Please use OPA_CROS.",
+                        "",
+                        "This is OPA on Android Go (not part of AGSA)",
+                        "Assistant on Nexus with screen off/locked. Use go/bisto device to trigger.",
+                        "Assistant on Titan hub mode (go/titan-hubmode-surface). This is OPA Android first party Smart Display devices. The UI experience is built on Opal (Gallium and Flutter) and native Android.",
+                        "Assistant on Android tablet",
+                        "Assistant on native Chrome OS (go/croissant).",
+                        "For assistant on GACS devices (go/gacs-dd). Google Assistant Conversation Service (GACS) defines intents the device accepts. This surface serves the intents in the assistant response.",
+                        "",
+                        "Assistant on iOS with screen off/locked. Use go/bisto device to trigger.",
+                        "Assistant on KaiOS. go/kaiosama",
+                        "Assistant on Mobile Web. go/opa-spidey",
+                        "Assistant on low-cost RTOS phones (go/conceRTOS).",
+                        "",
+                        "Telegram 3P messaging app",
+                        "Assistant on a phone call (go/telephone).",
+                        "",
+                        "A Youtube app.",
+                        "Eval-only surfaces. These surfaces are not real surfaces. They are only used in intermediate steps of eval query and request generation: 1. Eval samplers (OPA query sampler and Cannery sampler) checks logs and temporarily assigns these surface types to the logs, to put Bisto, Lockhart Mic, ... queries in the correct query pools. 2. Request builders uses these surface types to determine how TaskRequest for Bisto, Lockhart Mic, ... should be built, like whether some user user agent should be used, whether some entry source should be set. The surface types in the generated TaskRequest is still the production surface types, like OPA_ANDROID_SCREENLESS or OPA_AGSA. Temp surface for Bisto Android eval. Will be merged with OPA_ANDROID_SCREENLESS in the future.",
+                        "",
+                        "",
+                        "OPA_ANDROID_AUTO has another sub-surface (embedded) that differs in the reported capabilities, client-ops, flags but uses the same surface_type string of OPA_ANDROID_AUTO. This fake surface would allow running turing2 tests and evals for this embedded surface. Deprecated as of Feb 2019. Please use \"OPA_ANDROID_AUTO_EMBEDDED\" client type for tests and eval. See go/client-onboarding for more details. https://cs.corp.google.com/piper///depot/google3/assistant/assistant_server/tools/util/consts.h?l=32&rcl=247481455",
+                        "Unlaunched new surface prototype, ask spark-eng@.",
+                        "Wall-E is an Area120 Project building assistant powered robots. The surface is an extended joplin which have same capabilities as a google home adding custom robot features. Currently in active development. Please reach out walle-software@ or bingxin@ for questions. For details see go/walle-as-pipeline-1-pager.",
+                        "Surface used for unit-testing purposes. Unit-tests might still require the existence of a \"valid\" SurfaceType to succeed (eg. initialization of the CapabilityBuilder, proto matching, etc.). With the move away from SurfaceType checks, a generic \"TESTING\" SurfaceType can be used for such tests without affecting the test behavior. Unlike the CAPABILITY_BASED_SURFACE, this proto does not have any capabilities or ResponseType tied to it. It should only be used for unit-tests and should not be exposed in the ASDebugger."
+                    ],
+                    "type": "string"
+                },
+                "surfaceType": {
+                    "description": "The device's surface type. The types are defined at google3/assistant/api/core_types/surfaces.gcl.",
+                    "enum": [
+                        "UNKNOWN_TYPE",
+                        "ACCL",
+                        "AGSA",
+                        "ANDROID",
+                        "ANDROID_AUTO",
+                        "ANDROID_LITE",
+                        "ANDROID_PHONE",
+                        "ANDROID_SCREENLESS",
+                        "ANDROID_SMART_DISPLAY",
+                        "ANDROID_TABLET",
+                        "ANDROID_THINGS",
+                        "ANDROID_THINGS_CUBE",
+                        "ANDROID_THINGS_JASPER",
+                        "ANDROID_TV",
+                        "ANDROID_WEAR",
+                        "ASSISTANT_KIT",
+                        "ASSISTANT_SDK",
+                        "AUTO",
+                        "CAST_OS",
+                        "CHROME_OS",
+                        "CHROMECAST_MANHATTAN",
+                        "CLOUD_DEVICE",
+                        "CROS",
+                        "FITBIT_OS_WATCH",
+                        "FITBIT_OS_WATCH_ANDROID",
+                        "FITBIT_OS_WATCH_IOS",
+                        "GOOGLE_HOME",
+                        "HEADPHONE",
+                        "HEADPHONE_ANDROID",
+                        "HEADPHONE_IOS",
+                        "IOPA",
+                        "IOS",
+                        "IOS_SCREENLESS",
+                        "IPAD",
+                        "IPHONE",
+                        "KAI_OS",
+                        "KAI_OS_AMA",
+                        "LIBASSISTANT",
+                        "PHONE",
+                        "PIXEL",
+                        "PIXEL5",
+                        "PIXEL6",
+                        "PIXEL7",
+                        "PIXEL_BUDS",
+                        "PIXEL_TABLET",
+                        "PIXEL_TABLET_HUB_MODE",
+                        "PIXEL_TABLET_PERSONAL_MODE",
+                        "PIXEL_WATCH",
+                        "SCREENLESS",
+                        "SMART_DISPLAY",
+                        "SPEAKER",
+                        "TABLET",
+                        "TELEPHONE",
+                        "THING",
+                        "WATCH",
+                        "WEAR_OS",
+                        "WEAR_OS_WATCH"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown surface type.",
+                        "Android conversation client library (go/accl) is an Android library which implements the Conversation Protocol that allows a surface to have conversations with the Assistant server. OWNERS: surfaces-infra-core@",
+                        "Android Google Search App (go/agsa). OWNERS: surfaces-infra-core@",
+                        "Android. OWNERS: surfaces-infra-core@",
+                        "Assistant on Android Auto (go/ast-auto). OWNERS: opa-android-leads@",
+                        "Assistant on Android Go (not part of AGSA). OWNERS: assistantgo-eng@",
+                        "Assistant on Android phones accessed through the Google App (velvet). This surface is formerly known as OPA_AGSA. OWNERS: opa-android-leads@",
+                        "Assistant on Nexus with screen off/locked. Use go/bisto device to trigger. OWNERS: opa-android-leads@",
+                        "Assistant on Titan hub mode (go/titan-hubmode-surface). This is OPA Android first party Smart Display devices. The UI experience is built on Opal (Gallium and Flutter) and native Android. OWNERS: opa-android-leads@",
+                        "Assistant on Android tablet. OWNERS: opa-android-leads@",
+                        "Android Things (go/things). OWNERS: surfaces-infra-core@",
+                        "Lenovo Smart Clock v1, a stationary smart display device with a 4-inch screen, targeted for bedroom/bedside use cases like alarm, sleep tracking. Based on Android Things. See go/cube-home. OWNERS: cube-eng@",
+                        "Former codename for 3P 8-inch and 10-inch Smart Displays from Lenovo, JBL and LG, targeted for use in the kitchen. Based on Android Things. See go/jasper-home. OWNERS: jasper-eng@",
+                        "The Android platform that powers smart televisions, set-top-boxes, and over-the-top devices. See go/atv-eng and go/opa-tv. OWNERS: opa-tv-eng@",
+                        "Legacy Wear OS Assistant. OWNERS: wear-assistant-eng@",
+                        "AssistantKit (go/assistantkit) is a collection of iOS libraries allowing first party apps to integrate Google Assistant features. OWNERS: assistantkit-eng@",
+                        "Standalone gRPC based client. See go/easi. OWNERS: assistant-sdk-service-eng@",
+                        "Automobile. OWNERS: surfaces-infra-core@",
+                        "Cast OS (go/opal-castos-docs#what-is-castos). OWNERS: surfaces-infra-core@",
+                        "Chrome OS (go/chromsos) OWNERS: surfaces-infra-core@",
+                        "For chromecast with assistant + screen, e.g. Newman. OWNERS: cast-eng-platform@",
+                        "Virtual device for event-based triggering, e.g. executing time scheduled routines: go/scheduled-routines. OWNERS: surfaces-infra-core@",
+                        "Assistant on native Chrome OS (go/croissant). OWNERS: croissant@",
+                        "Assistant on Fitbit OS Watch. OWNERS: assistant-wearable-team@",
+                        "Assistant on Fitbit Watch paired with AGSA. OWNERS: assistant-wearable-team@",
+                        "Assistant on Fitbit Watch paired with iOPA. OWNERS: assistant-wearable-team@",
+                        "Google home speaker, i.e., Chirp devices. See go/assistant-speakers. OWNERS: assistant-speaker-leads@",
+                        "Headphone. OWNERS: surfaces-infra-core@",
+                        "Assistant on headphones paired with AGSA. OWNERS: assistant-wearable-team@",
+                        "Assistant on headphones paired with iOPA. OWNERS: assistant-wearable-team@",
+                        "Assistant on iOS devices (go/opa-ios). OWNERS: opa-ios-eng@",
+                        "iOS. OWNERS: surfaces-infra-core@",
+                        "Assistant on iOS with screen off/locked. Use go/bisto device to trigger. OWNERS: bisto-team@",
+                        "iPad devices. OWNERS: surfaces-infra-core@",
+                        "iPhone devices. OWNERS: surfaces-infra-core@",
+                        "Kai OS (go/kaios). OWNERS: surfaces-infra-core@",
+                        "Assistant on KaiOS (go/kaiosama). OWNERS: assistant-kaios-eng@",
+                        "LibAssistant (go/libassistant) C++ SDK that powers Assistant experience on both 1P devices like Google Home and 3P devices like Sonos. OWNERS: libassistant-core@",
+                        "A phone. OWNERS: surfaces-infra-core@",
+                        "Pixel devices. OWNERS: surfaces-infra-core@",
+                        "Pixel 5. OWNERS: surfaces-infra-core@",
+                        "Pixel 6. OWNERS: surfaces-infra-core@",
+                        "Pixel 7. OWNERS: surfaces-infra-core@",
+                        "Assistant on Pixel Buds. OWNERS: assistant-wearable-team@",
+                        "Assistant on Pixel Tablet/Tangor (a.k.a, TK). OWNERS: assistant-display-eng@",
+                        "Assistant on Tangor running in Hub mode. OWNERS: assistant-display-eng@",
+                        "Assistant on Tangor running in Personal mode. OWNERS: assistant-display-eng@",
+                        "Assistant on Pixel Watch (a.k.a., Rohan). OWNERS: assistant-wearable-team@",
+                        "Devices with screen off or locked (go/bisto). OWNERS: surfaces-infra-core@",
+                        "Smart surface, such as Titan. OWNERS: surfaces-infra-core@",
+                        "A speaker. OWNERS: surfaces-infra-core@",
+                        "A tablet. OWNERS: surfaces-infra-core@",
+                        "Assistant on a phone call (go/telephone). OWNERS: telephone-assistant-eng@",
+                        "IoT device. OWNERS: surfaces-infra-core@",
+                        "Watch. OWNERS: surfaces-infra-core@",
+                        "Wear OS. OWNERS: surfaces-infra-core@",
+                        "Assistant on Wear OS Watch (a.k.a., Edoras). OWNERS: assistant-wearable-team@"
+                    ],
+                    "type": "string"
+                },
+                "surfaceVersion": {
+                    "$ref": "AssistantApiCoreTypesGovernedSurfaceVersion",
+                    "description": "The version of the surface/client. This is different from the Conversation protocol version."
+                }
+            },
+            "type": "object"
+        },
+        "AssistantApiCoreTypesGovernedSurfaceVersion": {
+            "description": "The version of the surface/client. New surfaces are encouraged to only use the “major” field to keep track of version number. The “minor” field may be used for surfaces that rely on both the “major” and “minor” fields to define their version.",
+            "id": "AssistantApiCoreTypesGovernedSurfaceVersion",
+            "properties": {
+                "major": {
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "minor": {
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "AssistantApiCoreTypesHomeAppInfo": {
             "description": "The Home app information of the provider. Next ID: 3",
             "id": "AssistantApiCoreTypesHomeAppInfo",
@@ -11518,7 +11863,7 @@
             "type": "object"
         },
         "AssistantApiCoreTypesMessageNotification": {
-            "description": "This proto captures the contents of a messaging app notification that is typically part of a conversation thread. Next Id: 20",
+            "description": "LINT.IfChange(ungoverned_message_notification) This proto captures the contents of a messaging app notification that is typically part of a conversation thread. Next Id: 20",
             "id": "AssistantApiCoreTypesMessageNotification",
             "properties": {
                 "appName": {
@@ -11615,15 +11960,20 @@
             "type": "object"
         },
         "AssistantApiCoreTypesMessageNotificationNotificationEntry": {
-            "description": "Structure of each notification in the MessageNotification Bundle. Attribute sender_name could be different in case of group messages. Next Id: 6",
+            "description": "Structure of each notification in the MessageNotification Bundle. Attribute sender_name could be different in case of group messages. Next Id: 8",
             "id": "AssistantApiCoreTypesMessageNotificationNotificationEntry",
             "properties": {
+                "charCount": {
+                    "description": "Count of characters in the message body in the notification.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "dataUri": {
                     "description": "Uri for the attachment (image, audio, video etc.).",
                     "type": "string"
                 },
                 "messageBody": {
-                    "description": "Content of the message body in the notification.",
+                    "description": "Note that this is not present in production traffic. Content of the message body in the notification.",
                     "type": "string"
                 },
                 "mimeType": {
@@ -11638,6 +11988,11 @@
                 "sender": {
                     "$ref": "AssistantApiCoreTypesMessageNotificationPerson",
                     "description": "Sender of the message notification."
+                },
+                "wordCount": {
+                    "description": "Count of words in the message body in the notification.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -12318,7 +12673,7 @@
                 },
                 "systemNotificationRestrictions": {
                     "$ref": "AssistantApiSystemNotificationRestrictions",
-                    "description": "Restrictions related to system-level notifications. This field is superficially similar to ProactiveNotificationOutput, but unlike that field which tracks a per-user preference on the OPA side, this field captures system level notifications restrictions. This field is not stored and is merged to capablities from conversation params. It exists mostly for logging purposes of android channel state and global app-level notification opt out."
+                    "description": "Restrictions related to system-level notifications. This field is superficially similar to ProactiveNotificationOutput, but unlike that field which tracks a per-user preference on the OPA side, this field captures system level notifications restrictions. This field is not stored and is merged to capabilities from conversation params. It exists mostly for logging purposes of android channel state and global app-level notification opt out."
                 },
                 "thirdPartyCapabilities": {
                     "$ref": "AssistantApiThirdPartyCapabilities",
@@ -12543,7 +12898,7 @@
             "type": "object"
         },
         "AssistantApiGuestAccessOutput": {
-            "description": "DEPRECATED: Use AccessControlOutput instead. Access settings for guests.",
+            "description": "Access settings for guests.",
             "id": "AssistantApiGuestAccessOutput",
             "properties": {
                 "guestAccessOnYoutube": {
@@ -12803,7 +13158,7 @@
                     "description": "Contains detailed provider information such as android app package name."
                 },
                 "providerKey": {
-                    "description": "An provider enum string for OTT providers. The available key can be found in go/ump-provider-enum For Tuner provider, the provider key would be an ID the tuner app uploaded from TIF. See https://source.android.com/devices/tv",
+                    "description": "A provider enum string for OTT providers. The available key can be found in go/ump-provider-enum For Tuner provider, the provider key would be an ID the tuner app uploaded from TIF. See https://source.android.com/devices/tv",
                     "type": "string"
                 },
                 "providerType": {
@@ -12832,14 +13187,9 @@
             "type": "object"
         },
         "AssistantApiLoggingOnlyData": {
-            "description": "Data which is produced for logging and debugging. Servers MUST NOT use this for any other purposes, such as branching on it. Next ID: 15",
+            "description": "Data which is produced for logging and debugging. Servers MUST NOT use this for any other purposes, such as branching on it. Next ID: 16",
             "id": "AssistantApiLoggingOnlyData",
             "properties": {
-                "accountIndex": {
-                    "description": "The index of the account on the device. Useful when there are multiple accounts on a device such as distinguishing primary user data from secondary users. There is no guarantee that this is a stable number but is relatively stable in practice.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "acpVersion": {
                     "description": "A user-readable string describing the ACP version (go/acp-version) of the client app used by the user to originate the conversation.",
                     "type": "string"
@@ -12911,6 +13261,10 @@
                     "description": "A string recording the app version that is initially used to created this settings entry.",
                     "type": "string"
                 },
+                "isPrimaryUser": {
+                    "description": "Boolean field to indicate whether a certain user is the primary user of a device or not. This is useful for distinguishing the user0 from other users given user0 might have certain privileges (Eg: Hubmode on Tangor)",
+                    "type": "boolean"
+                },
                 "mdnsDisplayName": {
                     "description": "default display name of device over mdns. This is specified at the factory, not specified by the user.",
                     "type": "string"
@@ -13284,10 +13638,6 @@
             "description": "These are user configurable permissions representing what the device is allowed to output. Next ID: 11",
             "id": "AssistantApiOutputRestrictions",
             "properties": {
-                "accessControlOutput": {
-                    "$ref": "AssistantApiAccessControlOutput",
-                    "description": "Access settings for all providers."
-                },
                 "googlePhotoContent": {
                     "description": "The type of Google Photo content which the device can output.",
                     "enum": [
@@ -13295,14 +13645,14 @@
                         "NO_RESTRICTED_PHOTO_CONTENT"
                     ],
                     "enumDescriptions": [
-                        "All content can be output, including contents from restriced categories (e.g. violent, racy).",
+                        "All content can be output, including contents from restricted categories (e.g. violent, racy).",
                         "Only content from non-restricted categories can be output."
                     ],
                     "type": "string"
                 },
                 "guestAccessOutput": {
                     "$ref": "AssistantApiGuestAccessOutput",
-                    "description": "DEPRECATED: Use access_control_output instead. Access settings for guests."
+                    "description": "Access settings for guests."
                 },
                 "personalData": {
                     "description": "The level of personal data which the device can output. See go/personal-readout for detail.",
@@ -13447,10 +13797,6 @@
                     ],
                     "type": "string"
                 },
-                "supportsProactiveOutput": {
-                    "description": "Whether a device supports proactive output. Note that this is assumed to be true for all Smart Display devices, but surfaces that newly start supporting proactive_output should set this bit.",
-                    "type": "boolean"
-                },
                 "userMatchProactive": {
                     "description": "Settings for displaying personal data on proactive surfaces with face match capability.",
                     "enum": [
@@ -13651,7 +13997,7 @@
                     "type": "array"
                 },
                 "visionHelpEnabled": {
-                    "description": "Whether the device enabled vision help features in accessiblity settings. The settings is config in Assistant App and on-device settings, and stored in footprints. When enabled, font, color and TTS will be adjusted.",
+                    "description": "Whether the device enabled vision help features in accessibility settings. The settings is config in Assistant App and on-device settings, and stored in footprints. When enabled, font, color and TTS will be adjusted.",
                     "type": "boolean"
                 }
             },
@@ -13765,7 +14111,7 @@
             "type": "object"
         },
         "AssistantApiSettingsAppCapabilities": {
-            "description": "These capabilties are associated with Assistant Settings on devices.",
+            "description": "These capabilities are associated with Assistant Settings on devices.",
             "id": "AssistantApiSettingsAppCapabilities",
             "properties": {
                 "carSettingsCapabilities": {
@@ -14240,10 +14586,6 @@
                     "description": "Local network ID of the device (truncated to obfuscate devices and households globally). This is a temporary signal to determine proximity of Assistant devices in a house (HGS place).",
                     "type": "string"
                 },
-                "trustedVoiceEnabled": {
-                    "description": "DEPRECATED: Use speech_settings instead. Indicates whether the user has enabled trusted voice for this device. See go/hotword-settings-on-cloud for more info on this project.",
-                    "type": "boolean"
-                },
                 "type": {
                     "description": "The type of the device. Note: this should only be used for grouping devices for UI presentation purpose. Use |capabilities| to decide what the device can do.",
                     "enum": [
@@ -14403,7 +14745,7 @@
                     "type": "boolean"
                 },
                 "state": {
-                    "description": "The call state of the device (i.e. whether an Duo call account has been setup on the device).",
+                    "description": "The call state of the device (i.e. whether a Duo call account has been setup on the device).",
                     "enum": [
                         "UNKNOWN_LINK_STATE",
                         "NOT_LINKED",
@@ -15625,7 +15967,7 @@
             "type": "object"
         },
         "AssistantApiSpeechCapabilities": {
-            "description": "DEPRECATED These capabilties are associated with speech detection on devices.",
+            "description": "DEPRECATED These capabilities are associated with speech detection on devices.",
             "id": "AssistantApiSpeechCapabilities",
             "properties": {
                 "dspAvailable": {
@@ -15820,7 +16162,7 @@
             "type": "object"
         },
         "AssistantApiSupportedFeatures": {
-            "description": "These are the set of features that are supported by the device. It's a part of the SoftwareCapabilities of the device. Next ID: 64",
+            "description": "These are the set of features that are supported by the device. It's a part of the SoftwareCapabilities of the device. Next ID: 66",
             "id": "AssistantApiSupportedFeatures",
             "properties": {
                 "aaeNotificationSourceSupported": {
@@ -15966,6 +16308,20 @@
                     "description": "Whether the surface supports LiveCards. In cases where the user intent flow cannot be completed within the Assistant, LiveCards are used to take the user to an external app or website. These cards will be pushed to the Google Home app via the PushMessage ClientOp.",
                     "type": "boolean"
                 },
+                "lottieAnimationSupport": {
+                    "description": "Whether the client supports the Lottie animation library for the broadcast feature.",
+                    "enum": [
+                        "LOTTIE_ANIMATION_UNKNOWN",
+                        "LOTTIE_ANIMATION_NOT_SUPPORTED",
+                        "LOTTIE_ANIMATION_SUPPORTED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
                 "mapsDialogsSupported": {
                     "description": "Whether the client supports Assistant dialogs within Maps. This field will be set only when the Maps on the surface supports Assistant dialogs embedded within Maps. go/gsa-gmm.",
                     "type": "boolean"
@@ -16020,6 +16376,10 @@
                     "description": "Whether the client supports the privacy-aware lockscreen protocol (go/assistant-lockscreen-spec).",
                     "type": "boolean"
                 },
+                "readMessagesTtsTaperingSupported": {
+                    "description": "Whether the client supports tts tapering for the read messages flow. If set to true the tapered tts variant would be used during the read messages flow.",
+                    "type": "boolean"
+                },
                 "remoteCloudCastingEnabled": {
                     "description": "Whether the client has remote casting enabled. For ex: we want to disable this for clients like Auto.",
                     "type": "boolean"
@@ -16185,6 +16545,10 @@
                 "executionCapabilities": {
                     "$ref": "AssistantApiSurfacePropertiesExecutionCapabilities"
                 },
+                "prefersGlanceableUi": {
+                    "description": "Indicates if the surface prefers glanceable UI when rendering Assistant response. (see go/mobile-dr-hbird-glanceable-comms-cuj for more context).",
+                    "type": "boolean"
+                },
                 "responseDisplayFormat": {
                     "description": "If this field is unset, the response format is unknown",
                     "enum": [
@@ -16596,6 +16960,76 @@
             },
             "type": "object"
         },
+        "AssistantContextProviderSelectionPolicy": {
+            "description": "Identifies a business policy used for selecting a given content provider in the form of a name and a resulting scoring action.",
+            "id": "AssistantContextProviderSelectionPolicy",
+            "properties": {
+                "policyAction": {
+                    "description": "Result of applying the policy.",
+                    "enum": [
+                        "UNSET_ACTION",
+                        "BOOST_TO_WIN_ACTION",
+                        "SUPPRESS_TO_INVALIDATE_ACTION"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "policyName": {
+                    "description": "Name of the policy.",
+                    "enum": [
+                        "UNSET_POLICY",
+                        "QUERY_RESTRICTED_SPOTIFY_POLICY",
+                        "QUERY_RESTRICTED_PANDORA_POLICY",
+                        "QUERY_RESTRICTED_NETFLIX_POLICY"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Candidate should win if the provider_id is Spotify, and the query specified to play the content on Spotify. See go/sp-policy-spotify.",
+                        "Candidate should win if the provider_id is Pandora, and the query specified to play the content on Pandora. See go/sp-policy-pandora.",
+                        "Candidate should win if the provider_id is Netflix, and the query specified to play the content on Netflix. See go/sp-policy-netflix."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AssistantContextProviderSelectionResult": {
+            "description": "Message that gets returned from the Provider Selection Library (PSL). It encodes the scores, applied policies, and pruning decisions for a given provider candidate.",
+            "id": "AssistantContextProviderSelectionResult",
+            "properties": {
+                "bucketedFinalScore": {
+                    "description": "Alternative bucketed score for use by downstream ranking providers. A raw numeric score is subject to semantic-drift, while a bucket is not.",
+                    "enum": [
+                        "DEFAULT_BUCKET"
+                    ],
+                    "enumDescriptions": [
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "finalScore": {
+                    "description": "Final score in the range [0,1] that can be used for ranking providers. Incorporates both policy rules and quality considerations.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "policyApplied": {
+                    "description": "List of business policies applied to the candidate.",
+                    "items": {
+                        "$ref": "AssistantContextProviderSelectionPolicy"
+                    },
+                    "type": "array"
+                },
+                "shouldPrune": {
+                    "description": "Indicates whether the candidate should be pruned.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "AssistantContextProviderVariant": {
             "description": "Note: As of May 2021, multiple providers use the same mids (e.g. YouTube Main, YouTube Go, and YouTube Music all have the same mids). However, quite often we end up using surface specific identifiers (e.g. Android package names, iOS bundle identifiers, etc.) to differentiate amongst them. This field allows us to move away from surface specific identifiers towards a surface-agnostic enum representing the same information.",
             "id": "AssistantContextProviderVariant",
@@ -16677,7 +17111,8 @@
                         "MISSING_LOCAL_DEVICE_SETTING",
                         "NO_DEVICE_HAS_REQUIRED_APP",
                         "HYBRID_DEVICE_NOT_QUALIFIED",
-                        "NO_NEARBY_DEVICES"
+                        "NO_NEARBY_DEVICES",
+                        "NO_MATCHING_LAST_USED_DEVICE"
                     ],
                     "enumDescriptions": [
                         "",
@@ -16707,7 +17142,8 @@
                         "AvailableDevice device setting of local device is missing.",
                         "Required app is not installed",
                         "All remote hybrid devices fail the propertries requirement specific (lock/unlock, etc) for hybrid devices (such as Tangor).",
-                        "No nearby hearing devices"
+                        "No nearby hearing devices",
+                        "No matching device for the LastUsedDevice requirement found."
                     ],
                     "type": "string"
                 }
@@ -16727,6 +17163,10 @@
                     "description": "Whether the client restricts alarms to ring within the next 24 hours.",
                     "type": "boolean"
                 },
+                "supportsGenericMutations": {
+                    "description": "Whether the client supports mutation of any alarm attribute such as time_pattern, recurrence_pattern, etc through the MUTATE action. If this is false, MUTATE may only be used to disable or dismiss an alarm. This field is true by default for backwards-compatibility; clients which don't support mutation outside of Disable/DismissAlarm should explicitly set this to false.",
+                    "type": "boolean"
+                },
                 "supportsStopAction": {
                     "description": "Whether the client supports the STOP alarm action. If this is false, stop actions will be represented by the MUTATE action, and the device may need to check alarm state to determine if there's a firing alarm that needs to be dismissed.",
                     "type": "boolean"
@@ -16957,6 +17397,11 @@
             },
             "type": "object"
         },
+        "AssistantDevicesPlatformProtoExecutionWaitCapability": {
+            "id": "AssistantDevicesPlatformProtoExecutionWaitCapability",
+            "properties": {},
+            "type": "object"
+        },
         "AssistantDevicesPlatformProtoInlinedActionCapability": {
             "id": "AssistantDevicesPlatformProtoInlinedActionCapability",
             "properties": {
@@ -17241,7 +17686,7 @@
             "type": "object"
         },
         "AssistantDevicesPlatformProtoSupportedDeviceOps": {
-            "description": "This message will specify supports for fields in |assistant.embedded.v1.DeviceOp|, for a device model package. See go/easi-client-op2 for more info. Next ID: 16",
+            "description": "This message will specify supports for fields in |assistant.embedded.v1.DeviceOp|, for a device model package. See go/easi-client-op2 for more info. Next ID: 17",
             "id": "AssistantDevicesPlatformProtoSupportedDeviceOps",
             "properties": {
                 "callCall": {
@@ -17264,6 +17709,10 @@
                     "$ref": "AssistantDevicesPlatformProtoDeviceTakePhotoCapability",
                     "description": "[device_take_photo] specifies the support for the device.TAKE_PHOTO clientop, and the corresponding device_take_photo field in assistant.embedded.v1.DeviceOp."
                 },
+                "executionWait": {
+                    "$ref": "AssistantDevicesPlatformProtoExecutionWaitCapability",
+                    "description": "|execution_wait| specifies the support for execution.WAIT client_op, and the corresponding execution_wait field in assistant.embedded.v1.DeviceOp."
+                },
                 "mediaNext": {
                     "$ref": "AssistantDevicesPlatformProtoMediaNextCapability"
                 },
@@ -17367,6 +17816,55 @@
             },
             "type": "object"
         },
+        "AssistantGroundingProviderProviderSignalResult": {
+            "description": "Message containing the processed provider signals. This message is consumed by systems outside of the Provider GP, such as the HGR. For use of provider signals within the Provider GP, please refer to the CTF-governed PackedProviderSignals defined in: cs/google3/assistant/context/proto/packed_provider_signals.proto;rcl=486224300;l=68",
+            "id": "AssistantGroundingProviderProviderSignalResult",
+            "properties": {
+                "isDefaultProvider": {
+                    "description": "Whether the provider is the default provider for the BII and entity type. Also known as the 'preferred_provider'.",
+                    "type": "boolean"
+                },
+                "isForegroundProvider": {
+                    "description": "Whether the provider is currently open in the foreground on the device.",
+                    "type": "boolean"
+                },
+                "isInAppProvider": {
+                    "description": "Indicates that fulfillment on this provider will happen within the provider app",
+                    "type": "boolean"
+                },
+                "isInstalled": {
+                    "description": "Whether the provider is installed, or otherwise reachable, from the device.",
+                    "type": "boolean"
+                },
+                "isLastUsedProvider": {
+                    "description": "Whether the provider was the last-used provider for this intent on the device. Also known as the 'sticky_provider'.",
+                    "type": "boolean"
+                },
+                "isQueryRestrictedProvider": {
+                    "description": "Whether the provider was specified by the query.",
+                    "type": "boolean"
+                },
+                "providerSelectionResult": {
+                    "$ref": "AssistantContextProviderSelectionResult",
+                    "description": "The result of running provider-selection on the provider candidate. This is populated by the Signal Extractor after the PSL has been run."
+                },
+                "providerTypeSignal": {
+                    "description": "Contains the \"fulfillment type\" of provider eg whether it's 0p or System API provider.",
+                    "enum": [
+                        "UNKNOWN_TYPE",
+                        "ZEROTH_PARTY_TYPE",
+                        "ANDROID_SYSTEM_API_TYPE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Provider fulfillment is through 0-party assistant app (AGSA) on mobile or 0-party libassistant on other surfaces. See go/0p-and-system-api-in-pc.",
+                        "Provider fulfillment is through Android System API. See go/0p-and-system-api-in-pc."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "AssistantGroundingRankerAssistantInteractionFeatures": {
             "id": "AssistantGroundingRankerAssistantInteractionFeatures",
             "properties": {
@@ -17447,7 +17945,8 @@
                         "SHARED_CONTACT",
                         "FAMILY_MEMBER",
                         "SHARED_DEVICE_USER",
-                        "ON_DEVICE_CONTACT_LOOKUP"
+                        "ON_DEVICE_CONTACT_LOOKUP",
+                        "APP_SEARCH_CONTACT"
                     ],
                     "enumDescriptions": [
                         "Contacts from Focus",
@@ -17460,7 +17959,8 @@
                         "Contacts shared from other users. See go/multi-user-shared-contact.",
                         "People in the user's family group in http://families.google.com who are not contacts.",
                         "People who share a device with the user who are not contacts.",
-                        "Contacts from on device lookup during contact fulfillment."
+                        "Contacts from on device lookup during contact fulfillment.",
+                        "Contacts from AppSearch."
                     ],
                     "type": "string"
                 },
@@ -17587,12 +18087,98 @@
             "type": "object"
         },
         "AssistantGroundingRankerDeviceGroundingProviderFeatures": {
-            "description": "Features to be extracted from Device GP for ranking in HGR. Next ID: 2",
+            "description": "Features to be extracted from Device GP for ranking in HGR. Each candidate from Device GP will be associated with its own DeviceGroundingProviderFeatures. Next ID: 5",
             "id": "AssistantGroundingRankerDeviceGroundingProviderFeatures",
             "properties": {
                 "deviceId": {
                     "$ref": "AssistantApiCoreTypesGovernedDeviceId",
-                    "description": "ID for the device. PRR specific feature."
+                    "description": "ID for the device. This feature is needed specifically for PRR and it contains PII. Note that not every device has a corresponding DeviceId."
+                },
+                "deviceTargetingFeatures": {
+                    "$ref": "AssistantGroundingRankerDeviceTargetingFeatures",
+                    "description": "Features generated by Device Targeting library (Lumos)."
+                },
+                "deviceTargetingLabels": {
+                    "$ref": "AssistantGroundingRankerDeviceTargetingLabels",
+                    "description": "Labels tagged by Device Targeting library (Lumos)."
+                },
+                "surfaceIdentity": {
+                    "$ref": "AssistantApiCoreTypesGovernedSurfaceIdentity",
+                    "description": "The set of information that helps identify the surface."
+                }
+            },
+            "type": "object"
+        },
+        "AssistantGroundingRankerDeviceTargetingFeatures": {
+            "description": "Features generated by Device Targeting library (Lumos). See go/hgr-lumos-integration and go/lumos-feature-extraction for more details.",
+            "id": "AssistantGroundingRankerDeviceTargetingFeatures",
+            "properties": {
+                "properties": {
+                    "$ref": "AssistantGroundingRankerDeviceTargetingFeaturesProperties"
+                },
+                "states": {
+                    "$ref": "AssistantGroundingRankerDeviceTargetingFeaturesStates"
+                }
+            },
+            "type": "object"
+        },
+        "AssistantGroundingRankerDeviceTargetingFeaturesProperties": {
+            "description": "The properties of the device. They are static and won't change.",
+            "id": "AssistantGroundingRankerDeviceTargetingFeaturesProperties",
+            "properties": {
+                "deviceModelId": {
+                    "description": "The model ID of the device. This should be globally unique across manufacturers/OEMs.",
+                    "type": "string"
+                },
+                "isOwnedBySpeaker": {
+                    "description": "Indicate whether the device is owned by the user who is speaking.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "AssistantGroundingRankerDeviceTargetingFeaturesStates": {
+            "description": "The states of the device. They are dynamic and may change based on the current context.",
+            "id": "AssistantGroundingRankerDeviceTargetingFeaturesStates",
+            "properties": {
+                "distance": {
+                    "description": "The distance of the device relative to others that hear the user's OKG. Timestamp of when the device was last used. Should correspond to when the AssistantRequestParams (in ASSISTANT_SNAPSHOT corpus) were last written for this device.",
+                    "enum": [
+                        "UNKNOWN_DISTANCE",
+                        "CLOSEST",
+                        "EQUALLY_CLOSE",
+                        "FURTHER"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "isDocked": {
+                    "description": "Indicate whether the device is docked on a base.",
+                    "type": "boolean"
+                },
+                "isLocked": {
+                    "description": "Indicate whether the device is locked.",
+                    "type": "boolean"
+                },
+                "isTethered": {
+                    "description": "Indicate whether the device is tethered to another device.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "AssistantGroundingRankerDeviceTargetingLabels": {
+            "description": "Labels tagged by Device Targeting library (Lumos). See go/hgr-lumos-integration and go/lumos-feature-extraction for more details.",
+            "id": "AssistantGroundingRankerDeviceTargetingLabels",
+            "properties": {
+                "isSelectedByLumos": {
+                    "description": "Indicate whether the device is selected by Lumos as the target device.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -17696,7 +18282,7 @@
             "type": "object"
         },
         "AssistantGroundingRankerMediaGroundingProviderFeatures": {
-            "description": "Features to be passed from Media GP to HGR. Next ID: 14",
+            "description": "Features to be passed from Media GP to HGR. Next ID: 15",
             "id": "AssistantGroundingRankerMediaGroundingProviderFeatures",
             "properties": {
                 "albumReleaseType": {
@@ -17751,6 +18337,10 @@
                     "description": "True if the user requests seed radio.",
                     "type": "boolean"
                 },
+                "isYoutubeMusicSeeking": {
+                    "description": "Indicates whether this is youtube content seeking music.",
+                    "type": "boolean"
+                },
                 "mediaContentType": {
                     "description": "MediaAquaAction::media_content_type from interpretation. It can be used for cross-content type ranking, for example, if a candidate's content type does not match this content type from interpretation, this candidate will be slightly demoted. Also, we might avoid fetching some signals when the content type is generic music, since some content types do not need ranking.",
                     "enum": [
@@ -17922,13 +18512,23 @@
             "type": "object"
         },
         "AssistantGroundingRankerPodcastGroundingProviderFeatures": {
-            "description": "Features to be extracted from Podcast GP for ranking in HGR. Next ID: 4",
+            "description": "Features to be extracted from Podcast GP for ranking in HGR. Next ID: 6",
             "id": "AssistantGroundingRankerPodcastGroundingProviderFeatures",
             "properties": {
                 "isExclusive": {
                     "description": "Whether the podcast is exclusive to a provider a not.",
                     "type": "boolean"
                 },
+                "podcastListenersCount": {
+                    "description": "The count of the unique users that listened to the podcast in the last 28 days.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "popularityScore": {
+                    "description": "Provider popularity score. More details are here go/ps-to-kg.",
+                    "format": "double",
+                    "type": "number"
+                },
                 "scubedNg3ModelScore": {
                     "description": "The relevance score from Scubed.",
                     "format": "float",
@@ -17943,16 +18543,13 @@
             "type": "object"
         },
         "AssistantGroundingRankerProviderGroundingProviderFeatures": {
-            "description": "Features to be extracted from Provider GP for ranking in HGR. Next ID: 5",
+            "description": "Features to be extracted from Provider GP for ranking in HGR. Next ID: 7",
             "id": "AssistantGroundingRankerProviderGroundingProviderFeatures",
             "properties": {
-                "isInAppProvider": {
-                    "description": "Indicates that fulfillment on this provider will happen within the provider app.",
-                    "type": "boolean"
-                },
-                "providerClusterIdDeprecated": {
+                "providerClusterIds": {
                     "description": "Cluster IDs for the provider. This field is repeated because some providers can be associated with multiple clusters. PRR specific feature.",
                     "items": {
+                        "format": "int64",
                         "type": "string"
                     },
                     "type": "array"
@@ -17961,6 +18558,10 @@
                     "$ref": "AssistantContextProviderId",
                     "description": "ProviderId for the provider in the binding set. PRR specific feature."
                 },
+                "providerSignalResult": {
+                    "$ref": "AssistantGroundingProviderProviderSignalResult",
+                    "description": "Provider signals extracted from Provider GP."
+                },
                 "pslScore": {
                     "description": "Provider quality score in the range [0,1] that can be used for ranking providers. Incorporates both policy rules and quality considerations.",
                     "format": "float",
@@ -18344,7 +18945,8 @@
                         "SHARED_CONTACT",
                         "FAMILY_MEMBER",
                         "SHARED_DEVICE_USER",
-                        "ON_DEVICE_CONTACT_LOOKUP"
+                        "ON_DEVICE_CONTACT_LOOKUP",
+                        "APP_SEARCH_CONTACT"
                     ],
                     "enumDescriptions": [
                         "",
@@ -18358,7 +18960,8 @@
                         "Contacts shared from other users. See go/multi-user-shared-contact.",
                         "People in the user's family group in http://families.google.com who are not contacts.",
                         "People who share a device with the user who are not contacts.",
-                        "Contacts from on device lookup during contact fulfillment."
+                        "Contacts from on device lookup during contact fulfillment.",
+                        "Contacts from AppSearch."
                     ],
                     "type": "string"
                 },
@@ -18471,7 +19074,7 @@
             "type": "object"
         },
         "AssistantLogsDeviceInfoLog": {
-            "description": "The information related to the device.",
+            "description": "The information related to the device. Next ID: 18",
             "id": "AssistantLogsDeviceInfoLog",
             "properties": {
                 "arbitrationDeviceId": {
@@ -18541,6 +19144,7 @@
                         "HYBRID_DEVICE_PROPERTIES_FILTER",
                         "NEARBY_DEVICE_FILTER",
                         "DEVICE_ATTRIBUTES_FILTER",
+                        "LAST_USED_DEVICE_FILTER",
                         "DEFAULT_MEDIA_OUTPUT_PROMOTER",
                         "DEVICE_GROUP_PROMOTER",
                         "LOCAL_DEVICE_PROMOTER",
@@ -18550,7 +19154,9 @@
                         "SAME_NAME_DEVICE_PROMOTER",
                         "PHONE_TARGETING_PROMOTER",
                         "TRAITS_PROMOTER",
-                        "DEVICE_TYPE_PROMOTER"
+                        "DEVICE_TYPE_PROMOTER",
+                        "FEATURE_EXTRACTOR",
+                        "LABELER"
                     ],
                     "enumDescriptions": [
                         "",
@@ -18567,6 +19173,7 @@
                         "",
                         "",
                         "",
+                        "",
                         "promoters",
                         "",
                         "",
@@ -18576,10 +19183,16 @@
                         "",
                         "",
                         "",
-                        ""
+                        "",
+                        "feature extractor",
+                        "labeler"
                     ],
                     "type": "string"
                 },
+                "homeStructureId": {
+                    "description": "The home structure id of the device.",
+                    "type": "string"
+                },
                 "isRemote": {
                     "type": "boolean"
                 },
@@ -19046,7 +19659,8 @@
                         "MISSING_LOCAL_DEVICE_SETTING",
                         "NO_DEVICE_HAS_REQUIRED_APP",
                         "HYBRID_DEVICE_NOT_QUALIFIED",
-                        "NO_NEARBY_DEVICES"
+                        "NO_NEARBY_DEVICES",
+                        "NO_MATCHING_LAST_USED_DEVICE"
                     ],
                     "enumDescriptions": [
                         "",
@@ -19076,7 +19690,8 @@
                         "AvailableDevice device setting of local device is missing.",
                         "Required app is not installed",
                         "All remote hybrid devices fail the propertries requirement specific (lock/unlock, etc) for hybrid devices (such as Tangor).",
-                        "No nearby hearing devices"
+                        "No nearby hearing devices",
+                        "No matching device for the LastUsedDevice requirement found."
                     ],
                     "type": "string"
                 },
@@ -19259,6 +19874,7 @@
                         "HYBRID_DEVICE_PROPERTIES_FILTER",
                         "NEARBY_DEVICE_FILTER",
                         "DEVICE_ATTRIBUTES_FILTER",
+                        "LAST_USED_DEVICE_FILTER",
                         "DEFAULT_MEDIA_OUTPUT_PROMOTER",
                         "DEVICE_GROUP_PROMOTER",
                         "LOCAL_DEVICE_PROMOTER",
@@ -19268,7 +19884,9 @@
                         "SAME_NAME_DEVICE_PROMOTER",
                         "PHONE_TARGETING_PROMOTER",
                         "TRAITS_PROMOTER",
-                        "DEVICE_TYPE_PROMOTER"
+                        "DEVICE_TYPE_PROMOTER",
+                        "FEATURE_EXTRACTOR",
+                        "LABELER"
                     ],
                     "enumDescriptions": [
                         "",
@@ -19285,6 +19903,7 @@
                         "",
                         "",
                         "",
+                        "",
                         "promoters",
                         "",
                         "",
@@ -19294,7 +19913,9 @@
                         "",
                         "",
                         "",
-                        ""
+                        "",
+                        "feature extractor",
+                        "labeler"
                     ],
                     "type": "string"
                 }
@@ -19774,8 +20395,63 @@
             },
             "type": "object"
         },
+        "AssistantPfrDeviceRdMetadata": {
+            "id": "AssistantPfrDeviceRdMetadata",
+            "properties": {
+                "deviceName": {
+                    "type": "string"
+                },
+                "deviceTypes": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "effectiveArgSpanLength": {
+                    "format": "float",
+                    "type": "number"
+                },
+                "hasAmbiguousResolutions": {
+                    "description": "True if there are more than one possible resolutions to the RD.",
+                    "type": "boolean"
+                },
+                "hasResolvedDeviceId": {
+                    "description": "True if there's at least one device id that gets resolved. Note this is different from is_grounded = true: it is possible that is_grounded = false (num_grounded_args =0) but there is resolved device ids. E.g.: \"turn on the blue light\" Power_on(device_object = [d1, d2]:RD(category=DeviceObject(name='blue light')) where there are \"blue light 1\" and \"blue light 2\" hence two resolved device ids. But since the quantifier is single, GB can't resolve the ambiguity and would set num_grounded_args = 0 to indicate such unresolved ambiguity.",
+                    "type": "boolean"
+                },
+                "roomName": {
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AssistantPfrSmartHomeIntentMetadata": {
+            "description": "Used by the Smarthome Business Rules twiddler to determine whether to replace the top-scoring Smarthome intent with another.",
+            "id": "AssistantPfrSmartHomeIntentMetadata",
+            "properties": {
+                "deviceRdMetadata": {
+                    "description": "Each DeviceRdMetadata represents one device RD (device slot) in the intent. Note that each device RD could have multiple device groundings inside of it.",
+                    "items": {
+                        "$ref": "AssistantPfrDeviceRdMetadata"
+                    },
+                    "type": "array"
+                },
+                "intentName": {
+                    "type": "string"
+                },
+                "isExactMatch": {
+                    "description": "When num_constraints == num_constraints_satisfied, indicating all slot matchings are exact match.",
+                    "type": "boolean"
+                },
+                "isGrounded": {
+                    "description": "When num_grounded_args > 0, indicating there is at least one top-level argument is grounded.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "AssistantPrefulfillmentRankerPrefulfillmentSignals": {
-            "description": "Signals to be used by the Prefulfillment Ranker. Derived from the ParsingSignals and GroundingSignals carried by the FunctionCall. LINT.IfChange Next ID: 52",
+            "description": "Signals to be used by the Prefulfillment Ranker. Derived from the ParsingSignals and GroundingSignals carried by the FunctionCall. LINT.IfChange Next ID: 60",
             "id": "AssistantPrefulfillmentRankerPrefulfillmentSignals",
             "properties": {
                 "bindingSetAuis": {
@@ -19783,11 +20459,39 @@
                     "format": "float",
                     "type": "number"
                 },
+                "bindingSetInvalidReason": {
+                    "description": "BindingSet level invalid reason. This is only useful when the bindingset is invalid after running the horizontal check in HGR. More details: go/gb-infeasible.",
+                    "enum": [
+                        "BINDING_SET_INVALID_REASON_UNKNOWN",
+                        "BINDING_SET_INVALID_REASON_PROVIDER_INFEASIBLE_FOR_INTENT"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Currently, the only example of this is FulfillmentOptionLibrary outputs which tell us whether a provider is feasible given the entire interpretation. (Note: this is a bset-level check because it looks at the entire interpretation, which the Provider GP cannot do)."
+                    ],
+                    "type": "string"
+                },
                 "bindingSetPauis": {
                     "description": "Pauis score for the binding set",
                     "format": "float",
                     "type": "number"
                 },
+                "bindingSetValidity": {
+                    "description": "BindingSet level validity. When one of the GPs returns invalid resolution, or the combined bindingset is invalid, this enum will indidate the validity. More details: go/gb-infeasible.",
+                    "enum": [
+                        "BINDING_SET_VALIDITY_UNKNOWN",
+                        "BINDING_SET_VALIDITY_VALID",
+                        "BINDING_SET_VALIDITY_INVALID_RESOLUTIONS",
+                        "BINDING_SET_VALIDITY_INFEASIBLE_JOINT_GROUNDING"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "Means that one or more resolutions returned INVALID. See individual resolutions for more info.",
+                        "Means that the combination of resolutions is infeasible for some reason. See invalid_reason for more info."
+                    ],
+                    "type": "string"
+                },
                 "calibratedParsingScore": {
                     "description": "A parsing score that is independently calibrated by each parser/IG.",
                     "format": "double",
@@ -19859,6 +20563,10 @@
                     "description": "Whether the intent is fully grounded.",
                     "type": "boolean"
                 },
+                "isHighConfidencePodcastIntent": {
+                    "description": "Used for PFR manual rule to prefer high confidence podcast intent (e.g. topical, genre) over generic podcast intents.",
+                    "type": "boolean"
+                },
                 "isMediaControlIntent": {
                     "description": "Whether the intent is a media control intent.",
                     "type": "boolean"
@@ -19867,10 +20575,26 @@
                     "description": "Whether the intent is a PlayGenericMusic-type intent.",
                     "type": "boolean"
                 },
+                "isPodcastGenericIntent": {
+                    "description": "Used for PFR manual rule to prefer high confidence podcast intent (e.g. topical, genre) over generic podcast intents.",
+                    "type": "boolean"
+                },
                 "isPodcastIntent": {
                     "description": "Whether the intent is a podcast intent.",
                     "type": "boolean"
                 },
+                "isSageIntent": {
+                    "description": "Whether this intent was generated by Sage.",
+                    "type": "boolean"
+                },
+                "isTvmIntent": {
+                    "description": "Whether the intent is a media object tvm intent.",
+                    "type": "boolean"
+                },
+                "isValidSmarthomeIntent": {
+                    "description": "Whether the intent is a Smarthome-domain intent with valid device arguments.",
+                    "type": "boolean"
+                },
                 "isVideoIntent": {
                     "description": "Whether the intent is a media object video intent.",
                     "type": "boolean"
@@ -20001,7 +20725,10 @@
                         "RANKER_NAME_GROUNDING_RANKER_COMMS_EXP_CALIBRATED",
                         "RANKER_NAME_CONSOLIDATED_PFR_HGR_V2_COMMS_CALIBRATED",
                         "RANKER_NAME_EXPERIMENTAL_PFR_SAGE_NEW_DOMAINS",
-                        "RANKER_NAME_BUCKETED_PARSING_SCORE_FOR_SMARTHOME"
+                        "RANKER_NAME_BUCKETED_PARSING_SCORE_FOR_SMARTHOME",
+                        "RANKER_NAME_CONSOLIDATED_PFR_HGR_V2_COMMS_CALIBRATED_V2",
+                        "RANKER_NAME_GROUNDING_RANKER_COMMS_EXP_CALIBRATED_V2",
+                        "RANKER_NAME_CONSOLIDATED_PFR_HGR_PODCAST"
                     ],
                     "enumDescriptions": [
                         "Default value, when there is no ranker specified.",
@@ -20017,7 +20744,10 @@
                         "Name for experimental calibrated HGR model for Comms.",
                         "Name for consolidated PFR, HGRv2 and comms ranker.",
                         "Name for experimental PFR ranker for Sage and new domains.",
-                        "Name for PFR ranker with bucketed parsing scores for SmartHome."
+                        "Name for PFR ranker with bucketed parsing scores for SmartHome.",
+                        "Name for consolidated PFR, HGRv2 and comms ranker v2.",
+                        "Name for experimental calibrated HGR model for Comms V2.",
+                        "Name for HGR ranker for podcast based on RANKER_NAME_CONSOLIDATED_PFR_HGR_V2."
                     ],
                     "type": "string"
                 },
@@ -20043,15 +20773,27 @@
                     ],
                     "type": "string"
                 },
+                "smarthomeIntentMetadata": {
+                    "$ref": "AssistantPfrSmartHomeIntentMetadata",
+                    "description": "SmartHome intent metadata used for the SmartHome business-rules twiddler."
+                },
                 "subIntentType": {
                     "description": "sub_intent_type differentiates between intents that share the top level intent name. For eg: for TV_FALLBACK_SEARCH_INTENT, the top level intent name must be \"Find_media\" and the media_object argument within it must be of type \"Media_unspecified\".",
                     "enum": [
                         "SUB_INTENT_TYPE_UNKNOWN",
-                        "SUB_INTENT_TYPE_TV_FALLBACK_SEARCH_INTENT"
+                        "SUB_INTENT_TYPE_TV_FALLBACK_SEARCH_INTENT",
+                        "SUB_INTENT_TYPE_PODCAST",
+                        "SUB_INTENT_TYPE_MUSIC_INITIATION_INTENT",
+                        "SUB_INTENT_TYPE_PLAY_RADIO_INTENT",
+                        "SUB_INTENT_TYPE_PLAY_TVM_INTENT"
                     ],
                     "enumDescriptions": [
                         "",
-                        ""
+                        "Find_media",
+                        "Play_media, Play_media, Play_media, Listen_to_media, Media_entity_bare, Play_and_shuffle_media",
+                        "Play_media",
+                        "Play_media",
+                        "Play_media"
                     ],
                     "type": "string"
                 },
@@ -20585,7 +21327,7 @@
             "type": "object"
         },
         "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaData": {
-            "description": "Next ID: 43",
+            "description": "Next ID: 44",
             "id": "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaData",
             "properties": {
                 "actionProjectConfigs": {
@@ -20646,6 +21388,10 @@
                     "description": "Whether local home platform should discover new devices via LAN for the structure.",
                     "type": "boolean"
                 },
+                "matterUniqueId": {
+                    "$ref": "AssistantVerticalsHomeautomationProtoMatterUniqueId",
+                    "description": "Matter Unique ID. Contains VID/PID information"
+                },
                 "modelName": {
                     "description": "Model name from HomeGraph, populated from model_manifest.model_name. See b/200087451.",
                     "type": "string"
@@ -20862,6 +21608,24 @@
             },
             "type": "object"
         },
+        "AssistantVerticalsHomeautomationProtoMatterUniqueId": {
+            "description": "Matter unique Id. These values are provided by the device.",
+            "id": "AssistantVerticalsHomeautomationProtoMatterUniqueId",
+            "properties": {
+                "productId": {
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "uniqueId": {
+                    "type": "string"
+                },
+                "vendorId": {
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "AssistantVerticalsHomeautomationProtoPhysicalLocation": {
             "id": "AssistantVerticalsHomeautomationProtoPhysicalLocation",
             "properties": {
@@ -21429,7 +22193,8 @@
                         "DIALOGFLOW_DELEGATION",
                         "AD_LEAD_VERIFICATION",
                         "GET_HUMAN",
-                        "CHECK_INSURANCE_ACCEPTANCE"
+                        "CHECK_INSURANCE_ACCEPTANCE",
+                        "FREE_TEXT"
                     ],
                     "enumDescriptions": [
                         "// Data extraction:",
@@ -21478,7 +22243,8 @@
                         "Duplex for Business - Dialogflow delegation module for CCAI integration.",
                         "Duplex for Business - ad lead verification module for GLS integration.",
                         "Get Human bot.",
-                        "Check health insurance acceptance."
+                        "Check health insurance acceptance.",
+                        "Wrapper use case for creating an errand from conversational free-text. The true use case for the errand will be provided by a call to the LBT backend's task routing logic, such that this use case should NOT actually ever reach the caller."
                     ],
                     "type": "string"
                 }
@@ -25682,7 +26448,7 @@
             "type": "object"
         },
         "DrishtiVesperEncodedThumbnail": {
-            "description": "The attributes of encoded thumbnail images. Next id: 7.",
+            "description": "The attributes of encoded thumbnail images. Next id: 8.",
             "id": "DrishtiVesperEncodedThumbnail",
             "properties": {
                 "encodingQuality": {
@@ -25710,6 +26476,10 @@
                     "format": "int32",
                     "type": "integer"
                 },
+                "imageBlobId": {
+                    "description": "The Blob ID of the thumbnail image in the Blobstore. We recommend absolute IDs with universe prefix if this field is passed across systems. The owner of this blob is also responsible for data Wipeout compliance.",
+                    "type": "string"
+                },
                 "imageBytes": {
                     "description": "Encoded thumbnail bytes. Prefer this over `image_string` as we are not supposed to store image bytes in a proto string field.",
                     "format": "byte",
@@ -29183,6 +29953,179 @@
             },
             "type": "object"
         },
+        "GeostoreCityJsonProto": {
+            "description": "CityJsonProto is a custom proto representation of the portion of the CityJSON spec (https://www.cityjson.org/) relevant to internal projects. See go/cityjsonproto-design for more information about the modeling and design decisions implemented here.",
+            "id": "GeostoreCityJsonProto",
+            "properties": {
+                "cityObjects": {
+                    "description": "City objects associated with this CityJsonProto.",
+                    "items": {
+                        "$ref": "GeostoreCityJsonProtoCityObject"
+                    },
+                    "type": "array"
+                },
+                "transform": {
+                    "$ref": "GeostoreCityJsonProtoTransform",
+                    "description": "Spec for converting vertices from a local coordinate system in arbitrary units to ECEF coordinates in meters (https://en.wikipedia.org/wiki/Earth-centered,_Earth-fixed_coordinate_system)."
+                },
+                "vertexXyz": {
+                    "description": "Vertices as local coordinates represented as a flattened list: [x1,y1,z1,x2,y2,z2,x3,y3,z3]. Vertices are relative to a local coordinate system and rounded to their nearest integer value. See `transform` for how vertices can be transformed from a local coordinate system into an Earth-centered, Earth-fixed coordinate system. Vertices are flattened for space efficiency, memory locality, and processing performance. To access the x,y,z coordinates of vertex N, read the values at indices 3N, 3N+1, and 3N+2.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoCityObject": {
+            "description": "Representation of an object with geometry.",
+            "id": "GeostoreCityJsonProtoCityObject",
+            "properties": {
+                "geometries": {
+                    "description": "Geometries associated with this object.",
+                    "items": {
+                        "$ref": "GeostoreCityJsonProtoCityObjectGeometry"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "The ID of this CityObject, which must be unique within this CityJsonProto. The ID does not have a meaning outside this CityJsonProto.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Type of object represented, e.g. building.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "BUILDING",
+                        "OTHER_CONSTRUCTION"
+                    ],
+                    "enumDescriptions": [
+                        "Should never be set in prod. If set locally and converted to CityJSON, the CityJSON will be invalid.",
+                        "Building.",
+                        "Unspecified other structure, e.g. storefront."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoCityObjectGeometry": {
+            "description": "Representation of geometry. Geometries vary both in type and in level-of-detail, enabling representation of any shape at any level of granularity.",
+            "id": "GeostoreCityJsonProtoCityObjectGeometry",
+            "properties": {
+                "lod": {
+                    "description": "Level-of-detail (LoD) indicates how intricate the geometric representation is. May be a single digit per CityGML standards or X.Y per TU Delft (visual depiction at https://3d.bk.tudelft.nl/lod/). `CityObject`s may have multiple geometries with the same LoD.",
+                    "type": "string"
+                },
+                "multipoint": {
+                    "$ref": "GeostoreCityJsonProtoCityObjectGeometryMultiPoint",
+                    "description": "For geometries consisting of a single point, line, or loop."
+                },
+                "multisurface": {
+                    "$ref": "GeostoreCityJsonProtoCityObjectGeometryMultiSurface",
+                    "description": "For geometries consisting of a collection of surfaces."
+                },
+                "solid": {
+                    "$ref": "GeostoreCityJsonProtoCityObjectGeometrySolid",
+                    "description": "For geometries consisting of a watertight 3D shape."
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoCityObjectGeometryMultiPoint": {
+            "description": "A single line, loop, or set of points.",
+            "id": "GeostoreCityJsonProtoCityObjectGeometryMultiPoint",
+            "properties": {
+                "xIndices": {
+                    "description": "A collection of references to vertices in `CityJsonProto.vertex_xyz`. `CityJsonProto.vertex_xyz` is a flattened list of vertex coordinates. A value in `x_indices` should be the index of the x-coordinate of the desired vertex V; the full coordinates of vertex V can then be found at indices [V,V+1,V+2]. For example, an `x_indices` containing 3, 0, and 12 references three vertices, whose complete x,y,z coordinates can respectively be found at `CityJsonProto.vertex_xyz` indices [3,4,5], [0,1,2], and [12,13,14].",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoCityObjectGeometryMultiSurface": {
+            "description": "A collection of arbitrary surfaces that have no prescribed topological relationship.",
+            "id": "GeostoreCityJsonProtoCityObjectGeometryMultiSurface",
+            "properties": {
+                "surfaces": {
+                    "description": "All surfaces are standalone entities with no relationship to each other.",
+                    "items": {
+                        "$ref": "GeostoreCityJsonProtoCityObjectGeometrySurface"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoCityObjectGeometrySolid": {
+            "description": "A 3D shape, composed of a watertight exterior shell with optional interior watertight shells.",
+            "id": "GeostoreCityJsonProtoCityObjectGeometrySolid",
+            "properties": {
+                "shells": {
+                    "description": "The first shell is exterior; any additional are interior.",
+                    "items": {
+                        "$ref": "GeostoreCityJsonProtoCityObjectGeometryMultiSurface"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoCityObjectGeometrySurface": {
+            "description": "A polygonal surface, composed of a closed exterior loop with optional closed interior loops.",
+            "id": "GeostoreCityJsonProtoCityObjectGeometrySurface",
+            "properties": {
+                "loops": {
+                    "description": "The first loop is exterior; any additional are interior.",
+                    "items": {
+                        "$ref": "GeostoreCityJsonProtoCityObjectGeometryMultiPoint"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoTransform": {
+            "description": "Information for transforming a point from an \"old\" to \"new\" coordinate frame. Applied as follows: vertex_new = scale * vertex_old + translate",
+            "id": "GeostoreCityJsonProtoTransform",
+            "properties": {
+                "scale": {
+                    "description": "Relative scale of the vertices in the new coordinate system relative to the old coordinate system. Applies to all three x,y,z coordinates.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "translate": {
+                    "$ref": "GeostoreCityJsonProtoTransformXyzVector",
+                    "description": "Offset of each vertex in the new coordinate system relative to the old coordinate system."
+                }
+            },
+            "type": "object"
+        },
+        "GeostoreCityJsonProtoTransformXyzVector": {
+            "description": "Vector of length three whose values respectively correspond to the x, y, and z axes.",
+            "id": "GeostoreCityJsonProtoTransformXyzVector",
+            "properties": {
+                "x": {
+                    "format": "double",
+                    "type": "number"
+                },
+                "y": {
+                    "format": "double",
+                    "type": "number"
+                },
+                "z": {
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
         "GeostoreComposableItemProto": {
             "description": "Generic item proto. This is intended to have only certain aspects filled (e.g. photo only, name + price). Valid combinations of properties are enforced by linters.",
             "id": "GeostoreComposableItemProto",
@@ -29337,6 +30280,19 @@
             },
             "type": "object"
         },
+        "GeostoreCurvatureProto": {
+            "id": "GeostoreCurvatureProto",
+            "properties": {
+                "pointCurvature": {
+                    "description": "Curvature values at points along the flowline. A linear interpolation between two successive points will yield the curvature value at intermediate points.",
+                    "items": {
+                        "$ref": "GeostorePointCurvatureProto"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "GeostoreCurveConnectionProto": {
             "description": "Protocol buffer describing a curve that connects two externally specified endpoints.",
             "id": "GeostoreCurveConnectionProto",
@@ -29641,6 +30597,8 @@
                         "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE",
                         "PROVIDER_GOOGLE_LOCAL_SERVICES_ADS",
                         "PROVIDER_GOOGLE_GT_LANE_AUTOMATION",
+                        "PROVIDER_GOOGLE_GEO_NG_LOCAL",
+                        "PROVIDER_GOOGLE_MAPFACTS_CLEANUP",
                         "PROVIDER_GOOGLE_LOCALSEARCH",
                         "PROVIDER_GOOGLE_TRANSIT",
                         "PROVIDER_GOOGLE_GEOWIKI",
@@ -30182,7 +31140,7 @@
                         "",
                         "ABSTRACT",
                         "",
-                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B4",
+                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B6",
                         "ABSTRACT",
                         "",
                         "",
@@ -30357,6 +31315,8 @@
                         "",
                         "",
                         "",
+                        "",
+                        "",
                         "The next new \"Google\" provider entries should be placed above.",
                         "UMBRELLA",
                         "",
@@ -32037,7 +32997,7 @@
             "type": "object"
         },
         "GeostoreFeatureFieldMetadataProto": {
-            "description": "Provenance information for sub-fields of this feature.",
+            "description": "Provenance information for sub-fields of this feature - go/subfield-provenance.",
             "id": "GeostoreFeatureFieldMetadataProto",
             "properties": {
                 "fieldProvenance": {
@@ -32259,6 +33219,7 @@
                         "FUTURE_GEOMETRY",
                         "FUTURE_GEOMETRY_FOR",
                         "GCONCEPT",
+                        "GEOMETRY_3D",
                         "GEOMETRY_PRECISION_METERS",
                         "GEOPOLITICAL_GEOMETRY_REST_OF_WORLD_POLYGON",
                         "GEOPOLITICAL_GEOMETRY_SELF_POLYGON",
@@ -32371,8 +33332,9 @@
                         "TRANSIT_LINE_VARIANT_LINE_CONCEPT",
                         "TRANSIT_LINE_VARIANT_STOP",
                         "TRANSIT_LINE_VEHICLE_TYPE",
-                        "TRANSIT_STATION_AGENCY",
+                        "TRANSIT_STATION_AGENCY_ASSOCIATION",
                         "VERTICAL_ORDERING_LEVEL",
+                        "VISUALIZATION_AREA",
                         "WATER_REMOVED_POLYGON",
                         "DEPRECATED_DO_NOT_USE_EMAIL_ADDRESS",
                         "DEPRECATED_DO_NOT_USE_RANK_GEOMETRY",
@@ -32417,7 +33379,8 @@
                         "DEPRECATED_DO_NOT_USE_VIEWCODE_INFO",
                         "DEPRECATED_DO_NOT_USE_WORKAREA",
                         "DEPRECATED_DO_NOT_USE_INFERRED_GEOMETRY_INCLUDES_GEOMETRY_OF",
-                        "DEPRECATED_DO_NOT_USE_INFERRED_GEOMETRY_EXCLUDES_GEOMETRY_OF"
+                        "DEPRECATED_DO_NOT_USE_INFERRED_GEOMETRY_EXCLUDES_GEOMETRY_OF",
+                        "DEPRECATED_DO_NOT_USE_TRANSIT_STATION_AGENCY"
                     ],
                     "enumDescriptions": [
                         "",
@@ -32625,6 +33588,9 @@
                         "",
                         "",
                         "",
+                        "",
+                        "",
+                        "",
                         ""
                     ],
                     "type": "string"
@@ -32749,6 +33715,10 @@
                     "$ref": "GeostoreFeatureIdProto",
                     "description": "Specifies the feature that this feature's geometry will replace. If this field is populated, the referenced feature must have a future_geometry reference back to this feature. This field is only allowed (and required) for TYPE_FUTURE_GEOMETRY features."
                 },
+                "geometry3d": {
+                    "$ref": "GeostoreGeometryStoreReferenceProto",
+                    "description": "Geometry Store ID and materialized geometry representing the feature's physical shape in the world."
+                },
                 "geometryPrecisionMeters": {
                     "description": "If set, the feature's actual location can be assumed to be somewhere within a circle of this radius, centered on the feature's location. More information on this field at go/gpm-definition-update. NOTE: Only applicable to features with 'point' geometry. Please contact geo-schema-team@ if you have non-point use cases for which this field would be useful.",
                     "format": "double",
@@ -33771,6 +34741,10 @@
                     "$ref": "GeostoreVerticalOrderingProto",
                     "description": "Represents vertical ordering for this feature relative to other geometrically-overlaping features. See go/aboutgrades for more information about distinction among different levels."
                 },
+                "visualizationArea": {
+                    "$ref": "GeostoreGeometryStoreReferenceProto",
+                    "description": "Geometry Store ID and materialized geometry representing a tight bounding box of the feature's geometry (or the building/grounds a POI occupies), e.g. for generating flyover experiences."
+                },
                 "waterRemovedPolygon": {
                     "$ref": "GeostorePolygonProto",
                     "description": "A version of the geometry which has water removed but is not simplified (thus having equal or more vertices than polygon_for_display)."
@@ -33853,6 +34827,10 @@
             "description": "Wrapper to hold data related to a lane’s track, extendable for future data.",
             "id": "GeostoreFlowLineProto",
             "properties": {
+                "curvature": {
+                    "$ref": "GeostoreCurvatureProto",
+                    "description": "RESERVED"
+                },
                 "track": {
                     "$ref": "GeostoreTrackProto"
                 }
@@ -34157,6 +35135,26 @@
             },
             "type": "object"
         },
+        "GeostoreGeometryStoreReferenceProto": {
+            "description": "A Geometry Store ID and, in some contexts, geometry materialized from the record associated with that ID.",
+            "id": "GeostoreGeometryStoreReferenceProto",
+            "properties": {
+                "footprint": {
+                    "description": "Geometry (in STGeography format) materialized from the footprint field of the Geometry Store record associated with the geometry_id referenced above.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "geometry": {
+                    "$ref": "GeostoreCityJsonProto",
+                    "description": "Geometry materialized from the full_fidelity_proto field of the Geometry Store record associated with the geometry_id referenced above."
+                },
+                "geometryId": {
+                    "description": "The ID of a record in the Geometry Store.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GeostoreGeopoliticalGeometryProto": {
             "description": "Geopolitical (unsimplified) polygons for a feature for different geopolitical use cases. See go/unsimplified-poly.",
             "id": "GeostoreGeopoliticalGeometryProto",
@@ -34523,6 +35521,8 @@
                         "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE",
                         "PROVIDER_GOOGLE_LOCAL_SERVICES_ADS",
                         "PROVIDER_GOOGLE_GT_LANE_AUTOMATION",
+                        "PROVIDER_GOOGLE_GEO_NG_LOCAL",
+                        "PROVIDER_GOOGLE_MAPFACTS_CLEANUP",
                         "PROVIDER_GOOGLE_LOCALSEARCH",
                         "PROVIDER_GOOGLE_TRANSIT",
                         "PROVIDER_GOOGLE_GEOWIKI",
@@ -35064,7 +36064,7 @@
                         "",
                         "ABSTRACT",
                         "",
-                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B4",
+                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B6",
                         "ABSTRACT",
                         "",
                         "",
@@ -35239,6 +36239,8 @@
                         "",
                         "",
                         "",
+                        "",
+                        "",
                         "The next new \"Google\" provider entries should be placed above.",
                         "UMBRELLA",
                         "",
@@ -36686,6 +37688,8 @@
                         "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE",
                         "PROVIDER_GOOGLE_LOCAL_SERVICES_ADS",
                         "PROVIDER_GOOGLE_GT_LANE_AUTOMATION",
+                        "PROVIDER_GOOGLE_GEO_NG_LOCAL",
+                        "PROVIDER_GOOGLE_MAPFACTS_CLEANUP",
                         "PROVIDER_GOOGLE_LOCALSEARCH",
                         "PROVIDER_GOOGLE_TRANSIT",
                         "PROVIDER_GOOGLE_GEOWIKI",
@@ -37227,7 +38231,7 @@
                         "",
                         "ABSTRACT",
                         "",
-                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B4",
+                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B6",
                         "ABSTRACT",
                         "",
                         "",
@@ -37402,6 +38406,8 @@
                         "",
                         "",
                         "",
+                        "",
+                        "",
                         "The next new \"Google\" provider entries should be placed above.",
                         "UMBRELLA",
                         "",
@@ -38138,7 +39144,7 @@
                     "description": "Hours in which the parking facility is open; that is, permits both arrivals and departures of the facility. Should only be set on compounds (i.e. parking lots or garages); roads are considered to always be “open,” though parking at certain times may be prohibited via restrictions. If unset on a compound, this suggests we don’t know the opening hours, or they are the same as the hours of the entity for which this feature offers parking facilities."
                 },
                 "parkingAvailable": {
-                    "description": "Indicates whether long-term parking is available at the feature; if true, long-term parking is available at the feature and parking allowances may be present on this feature, or parking_provider_feature may indicate defered parking feature(s). If false, this is an explicit statement that there is no long-term parking associated with this feature. If unset, we don't know whether there is long-term parking associated with this feature. If false or unset, only additional restrictions or short-term allowances will be populated.",
+                    "description": "Indicates whether long-term parking is available at the feature; if true, long-term parking is available at the feature and parking allowances may be present on this feature, or parking_provider_feature may indicate deferred parking feature(s). If false, this is an explicit statement that there is no long-term parking associated with this feature. If unset, we don't know whether there is long-term parking associated with this feature. If false or unset, only additional restrictions or short-term allowances will be populated.",
                     "type": "boolean"
                 },
                 "parkingProviderFeature": {
@@ -38356,6 +39362,33 @@
             },
             "type": "object"
         },
+        "GeostorePointCurvatureProto": {
+            "id": "GeostorePointCurvatureProto",
+            "properties": {
+                "curvatureStatus": {
+                    "enum": [
+                        "CURVATURE_UNSPECIFIED",
+                        "CURVATURE_UNKNOWN"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "A curvature value can be explicitly set as UNKNOWN when we do not have enough information to make a determination."
+                    ],
+                    "type": "string"
+                },
+                "radiansPerMeter": {
+                    "description": "Curvature in radians per meter. Negative is a curve to the left and positive is a curve to the right.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "startPointFraction": {
+                    "description": "How far along the line this curvature value starts to apply, in the format of decimal between 0 and 1.",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
         "GeostorePointProto": {
             "id": "GeostorePointProto",
             "properties": {
@@ -39153,6 +40186,8 @@
                         "PROVIDER_GOOGLE_GT_OPERATOR_PROVENANCE",
                         "PROVIDER_GOOGLE_LOCAL_SERVICES_ADS",
                         "PROVIDER_GOOGLE_GT_LANE_AUTOMATION",
+                        "PROVIDER_GOOGLE_GEO_NG_LOCAL",
+                        "PROVIDER_GOOGLE_MAPFACTS_CLEANUP",
                         "PROVIDER_GOOGLE_LOCALSEARCH",
                         "PROVIDER_GOOGLE_TRANSIT",
                         "PROVIDER_GOOGLE_GEOWIKI",
@@ -39694,7 +40729,7 @@
                         "",
                         "ABSTRACT",
                         "",
-                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B4",
+                        "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730B6",
                         "ABSTRACT",
                         "",
                         "",
@@ -39869,6 +40904,8 @@
                         "",
                         "",
                         "",
+                        "",
+                        "",
                         "The next new \"Google\" provider entries should be placed above.",
                         "UMBRELLA",
                         "",
@@ -40923,12 +41960,16 @@
                     "$ref": "GeostoreFeatureIdProto",
                     "description": "Restriction group this restriction belongs to."
                 },
+                "restrictionToken": {
+                    "description": "A token that can be used to identify the version of the data about this restriction.",
+                    "type": "string"
+                },
                 "schedule": {
                     "$ref": "GeostoreTimeScheduleProto",
                     "description": "When specified, restriction applies only at particular times (operating hours or times of the year: reversing lanes, seasonal roads, no left turns from 3-5pm Mon-Fri except holidays). Otherwise, restriction is in effect at all times."
                 },
                 "scope": {
-                    "description": "The scope that the restriction applies to. - SCOPE_DIRECTION means the segment/sibling pair is restricted in the direction of the segment that contains this RestrictionProto. For segment/sibling pairs with pedestrian facilities (and thus side-of-road routing) the RestrictionProto restricts both facilities in the direction of the segment (assuming that the restriction applies to travel mode TRAVEL_PEDESTRIAN). - SCOPE_SIDE means the RestrictionProto applies only to the side of road that the containing segment represents. That sibling's pedestrian facility is restricted in both directions. Schema constraints: - SCOPE_SIDE must be set if and only if travel_mode == [TRAVEL_PEDESTRIAN] and the segment containing the restriction has PEDESTRIAN_FACILITY_PRESENT. Such restrictions must have no subpath. - All other restrictions must have this field set to SCOPE_DIRECTION (whether explicitly or implicitly). This distinction is necessary for cases such as pedestrian facility on one-way segment/sibling roads.",
+                    "description": "The scope that the restriction applies to. - SCOPE_DIRECTION means the segment/sibling pair is restricted in the direction of the segment that contains this RestrictionProto. For segment/sibling pairs with pedestrian facilities (and thus side-of-road routing) the RestrictionProto restricts both facilities in the direction of the segment (assuming that the restriction applies to travel mode TRAVEL_PEDESTRIAN). - SCOPE_SIDE means the RestrictionProto applies only to the side of road that the containing segment represents. That sibling's pedestrian facility is restricted in both directions. Schema constraints: - SCOPE_SIDE must be set if and only if travel_mode == [TRAVEL_PEDESTRIAN] and the segment containing the restriction has the pedestrian_facility field set and is not set to PEDESTRIAN_FACILITY_UNKNOWN. Such restrictions must have no subpath. - All other restrictions must have this field set to SCOPE_DIRECTION (whether explicitly or implicitly). This distinction is necessary for cases such as pedestrian facility on one-way segment/sibling roads.",
                     "enum": [
                         "SCOPE_DIRECTION",
                         "SCOPE_SIDE"
@@ -41368,7 +42409,7 @@
                     "enum": [
                         "BICYCLE_FACILITY_SEPARATE_TRAIL",
                         "BICYCLE_FACILITY_PEDESTRIAN_PATH",
-                        "BICYCLE_FACILITY_WIDE_PEDESTRIAN_PATH",
+                        "BICYCLE_FACILITY_BIKE_FRIENDLY_PEDESTRIAN_PATH",
                         "BICYCLE_FACILITY_SHARED_ROAD",
                         "BICYCLE_FACILITY_BIKE_LANE",
                         "BICYCLE_FACILITY_BIKE_LANE_WITH_PEDESTRIAN_PATH",
@@ -41379,7 +42420,7 @@
                     "enumDescriptions": [
                         "This segment has a detached trail or path running alongside it, suitable for the use of cyclists. When a segment has this attribute, there should never be a distinct segment for the trail, because the road and trail are part of the same logical segment. In other words, the trail is modeled by this attribute on its associated road, rather than by a separate segment.",
                         "This segment has a sidewalk or other pedestrian pathway that permits bicycles.",
-                        "This segment has a wide sidewalk or other pedestrian pathway.",
+                        "This segment has a bike-friendly (e.g., wide) sidewalk or other pedestrian pathway.",
                         "This segment allows bicycles to share the road with motor vehicles. It may or may not provide special accommodation for cyclists.",
                         "This segment has a striped bicycle lane.",
                         "This segment has a striped bicycle lane, and also has a sidewalk or other pedestrian pathway that permits bicycles.",
@@ -42676,7 +43717,7 @@
             "id": "GeostoreTollClusterProto",
             "properties": {
                 "intersection": {
-                    "description": "The list of TYPE_INTERSECTION features that are toll points and form this toll cluster. A toll cluser can consist of either a single or a group of intersection points called toll points at the end of various road segments in MapFacts that represent one or more lanes passing through a toll fixture that all go to the same routing destination. This relationship is reciprocal, as a toll point intersection also stores a reference to the toll cluster it belongs to. A toll cluster must have reference to one or more toll points i.e. toll_cluster.intersection should always be populated.",
+                    "description": "The list of TYPE_INTERSECTION features that are toll points and form this toll cluster. A toll cluster can consist of either a single or a group of intersection points called toll points at the end of various road segments in MapFacts that represent one or more lanes passing through a toll fixture that all go to the same routing destination. This relationship is reciprocal, as a toll point intersection also stores a reference to the toll cluster it belongs to. A toll cluster must have reference to one or more toll points i.e. toll_cluster.intersection should always be populated.",
                     "items": {
                         "$ref": "GeostoreFeatureIdProto"
                     },
@@ -42806,16 +43847,31 @@
             "description": "Encapsulates information related to an individual transit station.",
             "id": "GeostoreTransitStationProto",
             "properties": {
-                "agencies": {
-                    "description": "Transit agencies which service this transit station. A station can be serviced by one or more transit agencies. See go/transit-agency-relation-migration for more information.",
+                "agencyAssociations": {
+                    "description": "All the transit agencies which service this station. A station can be serviced by multiple stations. There may only be one agency association per transit agency. See go/transit-agency-relation-migration for more details.",
                     "items": {
-                        "$ref": "GeostoreFeatureIdProto"
+                        "$ref": "GeostoreTransitStationProtoTransitAgencyAssociationProto"
                     },
                     "type": "array"
                 }
             },
             "type": "object"
         },
+        "GeostoreTransitStationProtoTransitAgencyAssociationProto": {
+            "description": "The association between this station and the agency which services this station.",
+            "id": "GeostoreTransitStationProtoTransitAgencyAssociationProto",
+            "properties": {
+                "agency": {
+                    "$ref": "GeostoreFeatureIdProto",
+                    "description": "The transit agency which services this station."
+                },
+                "stationCode": {
+                    "description": "A station code uniquely identifies a transit station within the transit agency's network.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GeostoreTrustSignalsProto": {
             "id": "GeostoreTrustSignalsProto",
             "properties": {
@@ -45005,11 +46061,13 @@
                     "description": "Indicates if an error occurred while fetching alarm state. If this value is missing, it can be assumed that the state fetch was successful.",
                     "enum": [
                         "STATE_FETCH_ERROR_UNSPECIFIED",
-                        "STATE_FETCH_ERROR_TIMEOUT"
+                        "STATE_FETCH_ERROR_TIMEOUT",
+                        "STATE_FETCH_ERROR_UNSUPPORTED"
                     ],
                     "enumDescriptions": [
                         "Equivalent to no errors from fetching state (i.e. success).",
-                        "The time taken to fetch state exceeded the allowed maximum time."
+                        "The time taken to fetch state exceeded the allowed maximum time.",
+                        "State fetch is not supported in Stateless Timer/Alarm Integration. This is expected for Stateless Integration."
                     ],
                     "type": "string"
                 }
@@ -45339,11 +46397,13 @@
                     "description": "Indicates if an error occurred while fetching timer state. If this value is missing, it can be assumed that the state fetch was successful.",
                     "enum": [
                         "STATE_FETCH_ERROR_UNSPECIFIED",
-                        "STATE_FETCH_ERROR_TIMEOUT"
+                        "STATE_FETCH_ERROR_TIMEOUT",
+                        "STATE_FETCH_ERROR_UNSUPPORTED"
                     ],
                     "enumDescriptions": [
                         "Equivalent to no errors from fetching state (i.e. success).",
-                        "The time taken to fetch state exceeded the allowed maximum time."
+                        "The time taken to fetch state exceeded the allowed maximum time.",
+                        "State fetch is not supported in Stateless Timer/Alarm Integration. This is expected for Stateless Integration."
                     ],
                     "type": "string"
                 },
@@ -45866,6 +46926,13 @@
                     },
                     "type": "array"
                 },
+                "documentNameFilter": {
+                    "description": "Search the documents in the list. Format: projects/{project_number}/locations/{location}/documents/{document_id}.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "documentSchemaNames": {
                     "description": "This filter specifies the exact document schema Document.document_schema_name of the documents to search against. If a value isn't specified, documents within the search results are associated with any schema. If multiple values are specified, documents within the search results may be associated with any of the specified schemas. At most 20 document schema names are allowed.",
                     "items": {
@@ -45937,6 +47004,14 @@
                     "description": "The document type of the document being referenced.",
                     "type": "boolean"
                 },
+                "documentIsLegalHoldFolder": {
+                    "description": "Document is a folder with legal hold.",
+                    "type": "boolean"
+                },
+                "documentIsRetentionFolder": {
+                    "description": "Document is a folder with retention policy.",
+                    "type": "boolean"
+                },
                 "documentName": {
                     "description": "Required. Name of the referenced document.",
                     "type": "string"
@@ -46244,6 +47319,10 @@
                     ],
                     "type": "string"
                 },
+                "enableCalUserEmailLogging": {
+                    "description": "Optional. Whether to enable CAL user email logging.",
+                    "type": "boolean"
+                },
                 "kmsKey": {
                     "description": "Optional. The KMS key used for CMEK encryption. It is required that the kms key is in the same region as the endpoint. The same key will be used for all provisioned resources, if encryption is available. If the kms_key is left empty, no encryption will be enforced.",
                     "type": "string"
@@ -46506,6 +47585,79 @@
             },
             "type": "object"
         },
+        "GoogleCloudContentwarehouseV1ProjectStatus": {
+            "description": "Status of a project, including the project state, dbType, aclMode and etc.",
+            "id": "GoogleCloudContentwarehouseV1ProjectStatus",
+            "properties": {
+                "accessControlMode": {
+                    "description": "Access control mode.",
+                    "enum": [
+                        "ACL_MODE_UNKNOWN",
+                        "ACL_MODE_UNIVERSAL_ACCESS",
+                        "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_BYOID",
+                        "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI"
+                    ],
+                    "enumDescriptions": [
+                        "This value is required by protobuf best practices",
+                        "Universal Access: No document level access control.",
+                        "Document level access control with customer own Identity Service.",
+                        "Document level access control using Google Cloud Identity."
+                    ],
+                    "type": "string"
+                },
+                "databaseType": {
+                    "description": "Database type.",
+                    "enum": [
+                        "DB_UNKNOWN",
+                        "DB_INFRA_SPANNER",
+                        "DB_CLOUD_SQL_POSTGRES"
+                    ],
+                    "enumDescriptions": [
+                        "This value is required by protobuf best practices",
+                        "Internal Spanner",
+                        "Cloud Sql with a Postgres Sql instance"
+                    ],
+                    "type": "string"
+                },
+                "documentCreatorDefaultRole": {
+                    "description": "The default role for the person who create a document.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "The location of the queried project.",
+                    "type": "string"
+                },
+                "qaEnabled": {
+                    "description": "If the qa is enabled on this project.",
+                    "type": "boolean"
+                },
+                "state": {
+                    "description": "State of the project.",
+                    "enum": [
+                        "PROJECT_STATE_UNSPECIFIED",
+                        "PROJECT_STATE_PENDING",
+                        "PROJECT_STATE_COMPLETED",
+                        "PROJECT_STATE_FAILED",
+                        "PROJECT_STATE_DELETING",
+                        "PROJECT_STATE_DELETING_FAILED",
+                        "PROJECT_STATE_DELETED",
+                        "PROJECT_STATE_NOT_FOUND"
+                    ],
+                    "enumDescriptions": [
+                        "Default status, required by protobuf best practices.",
+                        "The project is in the middle of a provision process.",
+                        "All dependencies have been provisioned.",
+                        "A provision process was previously initiated, but failed.",
+                        "The project is in the middle of a deletion process.",
+                        "A deleting process was initiated, but failed.",
+                        "The project is deleted.",
+                        "The project is not found."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudContentwarehouseV1Property": {
             "description": "Property of a document.",
             "id": "GoogleCloudContentwarehouseV1Property",
@@ -46821,12 +47973,16 @@
                     "enum": [
                         "UNKNOWN",
                         "ON_CREATE",
-                        "ON_UPDATE"
+                        "ON_UPDATE",
+                        "ON_CREATE_LINK",
+                        "ON_DELETE_LINK"
                     ],
                     "enumDescriptions": [
                         "Trigger for unknown action.",
                         "Trigger for create document action.",
-                        "Trigger for update document action."
+                        "Trigger for update document action.",
+                        "Trigger for create link action.",
+                        "Trigger for delete link action."
                     ],
                     "type": "string"
                 }
@@ -47119,6 +48275,10 @@
                     "description": "The token that specifies the starting position of the next page of results. This field is empty if there are no more results.",
                     "type": "string"
                 },
+                "questionAnswer": {
+                    "description": "Experimental. Question answer from the query against the document.",
+                    "type": "string"
+                },
                 "totalSize": {
                     "description": "The total number of matched documents which is available only if the client set SearchDocumentsRequest.require_total_size to `true` or set SearchDocumentsRequest.total_result_size to `ESTIMATED_SIZE` or `ACTUAL_SIZE`. Otherwise, the value will be `-1`. Typically a UI would handle this condition by displaying \"of many\", for example: \"Displaying 10 of many\".",
                     "format": "int32",
@@ -47245,12 +48405,14 @@
                     "enum": [
                         "TIME_FIELD_UNSPECIFIED",
                         "CREATE_TIME",
-                        "UPDATE_TIME"
+                        "UPDATE_TIME",
+                        "DISPOSITION_TIME"
                     ],
                     "enumDescriptions": [
                         "Default value.",
                         "Earliest document create time.",
-                        "Latest document update time."
+                        "Latest document update time.",
+                        "Time when document becomes mutable again."
                     ],
                     "type": "string"
                 },
@@ -47586,7 +48748,7 @@
                     "description": "Any error that occurred while processing this document."
                 },
                 "mimeType": {
-                    "description": "An IANA published MIME type (also referred to as media type). For more information, see https://www.iana.org/assignments/media-types/media-types.xhtml.",
+                    "description": "An IANA published [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml).",
                     "type": "string"
                 },
                 "pages": {
@@ -47789,7 +48951,7 @@
                 },
                 "imageQualityScores": {
                     "$ref": "GoogleCloudDocumentaiV1DocumentPageImageQualityScores",
-                    "description": "Image Quality Scores."
+                    "description": "Image quality scores."
                 },
                 "layout": {
                     "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
@@ -47966,7 +49128,7 @@
                     "type": "number"
                 },
                 "languageCode": {
-                    "description": "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.",
+                    "description": "The [BCP-47 language code](https://www.unicode.org/reports/tr35/#Unicode_locale_identifier), such as `en-US` or `sr-Latn`.",
                     "type": "string"
                 }
             },
@@ -48053,7 +49215,7 @@
                     "type": "integer"
                 },
                 "mimeType": {
-                    "description": "Encoding mime type for the image.",
+                    "description": "Encoding [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml) for the image.",
                     "type": "string"
                 },
                 "width": {
@@ -48065,7 +49227,7 @@
             "type": "object"
         },
         "GoogleCloudDocumentaiV1DocumentPageImageQualityScores": {
-            "description": "Image Quality Scores for the page image",
+            "description": "Image quality scores for the page image.",
             "id": "GoogleCloudDocumentaiV1DocumentPageImageQualityScores",
             "properties": {
                 "detectedDefects": {
@@ -48076,7 +49238,7 @@
                     "type": "array"
                 },
                 "qualityScore": {
-                    "description": "The overall quality score. Range `[0, 1]` where 1 is perfect quality.",
+                    "description": "The overall quality score. Range `[0, 1]` where `1` is perfect quality.",
                     "format": "float",
                     "type": "number"
                 }
@@ -48088,7 +49250,7 @@
             "id": "GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect",
             "properties": {
                 "confidence": {
-                    "description": "Confidence of detected defect. Range `[0, 1]` where 1 indicates strong confidence of that the defect exists.",
+                    "description": "Confidence of detected defect. Range `[0, 1]` where `1` indicates strong confidence that the defect exists.",
                     "format": "float",
                     "type": "number"
                 },
@@ -48621,7 +49783,7 @@
                     "description": "Font size."
                 },
                 "fontWeight": {
-                    "description": "Font weight. Possible values are normal, bold, bolder, and lighter. https://www.w3schools.com/cssref/pr_font_weight.asp",
+                    "description": "[Font weight](https://www.w3schools.com/cssref/pr_font_weight.asp). Possible values are `normal`, `bold`, `bolder`, and `lighter`.",
                     "type": "string"
                 },
                 "textAnchor": {
@@ -48629,11 +49791,11 @@
                     "description": "Text anchor indexing into the Document.text."
                 },
                 "textDecoration": {
-                    "description": "Text decoration. Follows CSS standard. https://www.w3schools.com/cssref/pr_text_text-decoration.asp",
+                    "description": "[Text decoration](https://www.w3schools.com/cssref/pr_text_text-decoration.asp). Follows CSS standard. ",
                     "type": "string"
                 },
                 "textStyle": {
-                    "description": "Text style. Possible values are normal, italic, and oblique. https://www.w3schools.com/cssref/pr_font_font-style.asp",
+                    "description": "[Text style](https://www.w3schools.com/cssref/pr_font_font-style.asp). Possible values are `normal`, `italic`, and `oblique`.",
                     "type": "string"
                 }
             },
@@ -48649,7 +49811,7 @@
                     "type": "number"
                 },
                 "unit": {
-                    "description": "Unit for the font size. Follows CSS naming (in, px, pt, etc.).",
+                    "description": "Unit for the font size. Follows CSS naming (such as `in`, `px`, and `pt`).",
                     "type": "string"
                 }
             },
@@ -48852,7 +50014,7 @@
             "id": "GoogleInternalAppsWaldoV1alphaAvailabilityPeriod",
             "properties": {
                 "dayOfWeek": {
-                    "description": "Day of week, 1 for Monday, ..., 7 for Sunday.",
+                    "description": "Day of week, 0 for Sunday, 1 for Monday, ...",
                     "format": "int32",
                     "type": "integer"
                 },
@@ -49437,7 +50599,7 @@
             "type": "object"
         },
         "GoogleTypeColor": {
-            "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
+            "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
             "id": "GoogleTypeColor",
             "properties": {
                 "alpha": {
@@ -52913,7 +54075,7 @@
             "type": "object"
         },
         "ImageExifIPTCMetadata": {
-            "description": "This proto holds IPTC metadata. http://www.iptc.org/cms/site/index.html?channel=CH0099 Proto field name is same with IPTC property name except which is clearly stated. Next Id: 63",
+            "description": "This proto holds IPTC metadata. http://www.iptc.org/cms/site/index.html?channel=CH0099 Proto field name is same with IPTC property name except which is clearly stated. Next Id: 64",
             "id": "ImageExifIPTCMetadata",
             "properties": {
                 "acquireLicensePage": {
@@ -52958,6 +54120,22 @@
                 "description": {
                     "type": "string"
                 },
+                "digitalSourceType": {
+                    "description": "See go/gi-annotations-indexing for more information.",
+                    "enum": [
+                        "DST_NOT_RECORDED",
+                        "DST_TRAINED_ALGORITHMIC_MEDIA",
+                        "DST_COMPOSITE_SYNTHETIC",
+                        "DST_ALGORITHMIC_MEDIA"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "https://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia",
+                        "https://cv.iptc.org/newscodes/digitalsourcetype/compositeSynthetic",
+                        "https://cv.iptc.org/newscodes/digitalsourcetype/algorithmicMedia"
+                    ],
+                    "type": "string"
+                },
                 "event": {
                     "type": "string"
                 },
@@ -53981,7 +55159,8 @@
                         "GENUS_CONTRIB_SERVICE_GEO_UGC",
                         "GENUS_SEARCH_SPORTS",
                         "GENUS_BUSINESSMESSAGING",
-                        "GENUS_AERIAL_VIEW"
+                        "GENUS_AERIAL_VIEW",
+                        "GENUS_DOCS_FLIX_RENDER"
                     ],
                     "enumDescriptions": [
                         "",
@@ -54030,7 +55209,8 @@
                         "Genus for GEO UGC videos processed by ContribService. go/venom-lite-for-geo-photo-videos",
                         "Genus for Search Sports vertical videos",
                         "Genus for Business Messaging videos",
-                        "Genus for Geo Aerial View"
+                        "Genus for Geo Aerial View",
+                        "Genus for Flix Render (Docs)"
                     ],
                     "type": "string"
                 },
@@ -54467,14 +55647,53 @@
             },
             "type": "object"
         },
+        "ImageRepositoryS3LangIdDebuggingInfo": {
+            "description": "For debugging only.",
+            "id": "ImageRepositoryS3LangIdDebuggingInfo",
+            "properties": {
+                "audioInputCap": {
+                    "description": "Audio input processing cap.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "failedSegments": {
+                    "description": "Number of failed segments. Successful segments are stored in `langid_signals_for_segment`.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "processedSegments": {
+                    "description": "Number of processed segments.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "segmentDuration": {
+                    "description": "Duration of each segment (except for the last one if capped).",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "segmentStride": {
+                    "description": "If >1, every N segment is processed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "waveHeader": {
+                    "$ref": "SpeechWaveHeader",
+                    "description": "Wave header of the audio input."
+                }
+            },
+            "type": "object"
+        },
         "ImageRepositoryS3LangIdSignals": {
-            "description": "Next Tag: 9",
+            "description": "Next Tag: 10",
             "id": "ImageRepositoryS3LangIdSignals",
             "properties": {
                 "containsSpeech": {
                     "description": "Whether this audio chunk has speech or not.",
                     "type": "boolean"
                 },
+                "debuggingInfo": {
+                    "$ref": "ImageRepositoryS3LangIdDebuggingInfo"
+                },
                 "endSec": {
                     "format": "int64",
                     "type": "string"
@@ -54833,7 +56052,8 @@
                         "GENUS_CONTRIB_SERVICE_GEO_UGC",
                         "GENUS_SEARCH_SPORTS",
                         "GENUS_BUSINESSMESSAGING",
-                        "GENUS_AERIAL_VIEW"
+                        "GENUS_AERIAL_VIEW",
+                        "GENUS_DOCS_FLIX_RENDER"
                     ],
                     "enumDescriptions": [
                         "",
@@ -54882,7 +56102,8 @@
                         "Genus for GEO UGC videos processed by ContribService. go/venom-lite-for-geo-photo-videos",
                         "Genus for Search Sports vertical videos",
                         "Genus for Business Messaging videos",
-                        "Genus for Geo Aerial View"
+                        "Genus for Geo Aerial View",
+                        "Genus for Flix Render (Docs)"
                     ],
                     "type": "string"
                 },
@@ -56939,43 +58160,1600 @@
             "type": "object"
         },
         "IndexingDocjoinerDataVersion": {
-            "description": "DataVersion tracks the version of data in CompositeDoc. The notion of \"data\" here is loose and people can define the name of their own. For example, a signal generated by Index Signals or an annotation generated by Goldmine (and other components) can all be considered as data here. Each field in this proto represents the human readable version string and the timestamp of one particular data. We choose to explicitly list out all of the data here for better understanding about which data are tracked. NOTE that human_readable_version is not intended for comparison, use timestamp_micros. In addition, we have an annotation about the field paths of each data. With proto reflection (using google3/net/proto2/util/public/field_path.h), downstream systems can take advantage of this annotation to automatically handle newly introduced data without modifying their code. Please also see the comment of FieldProjector above. There are also some fields in DataInfo that annotate who generates the data, the Index Signals or Goldmine annotator name.",
+            "description": "DataVersion tracks the version of data in CompositeDoc. The notion of \"data\" here is loose and people can define the name of their own. For example, a signal generated by Index Signals or an annotation generated by Goldmine (and other components) can all be considered as data here. Each field in this proto represents the human readable version string and the timestamp of one particular data. We choose to explicitly list out all of the data here for better understanding about which data are tracked. NOTE that human_readable_version is not intended for comparison, use timestamp_micros. In addition, we have an annotation about the field paths of each data. With proto reflection (using google3/net/proto2/util/public/field_path.h), downstream systems can take advantage of this annotation to automatically handle newly introduced data without modifying their code. Please also see the comment of FieldProjector above. There are also some fields in DataInfo that annotate who generates the data, the Index Signals or Goldmine annotator name. Next ID: 536",
             "id": "IndexingDocjoinerDataVersion",
             "properties": {
                 "acceleratedShoppingSignal": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "adsAdsaiMagicApfelApfelRegionFinderAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "adsAdsaiMagicMagicPageTypeAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "adsShoppingWebpxRawShoppingAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "amphtmlSignedExchangeErrorDetails": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "amphtmlSignedExchangeValidationPayload": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "analyticsSiteidAnalyticsPropertyAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "analyticsSiteidAnalyticsRenderedOutput": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "authenticSiteRankData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "babelEncoderBabelEncodings": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "badurlsBadurlsForceSelectionSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "boilerplateAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "boilerplateVisibleBytesEstimates": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "chromeCounts": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "commerceDataqualityOrganicCrawledSellerData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "commerceDataqualityOrganicShoppingAnnotationSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "commerceDataqualityOrganicShoppingSiteQuality": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "commonsenseQueriosityGoldmineQnaAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "commonsenseScoredCompoundReferenceAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "commonsenseStoneSoupProtoRaffiaInstructionsSeq": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "contraContentReviewAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "contraCuratedContent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "countryCountryAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "crawzallSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "creator": {
-                    "$ref": "IndexingDocjoinerDataVersionVersionInfo",
-                    "description": "LINT.ThenChange(//depot/google3/indexing/ames/spanner/schema/web-version.proto)"
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "datacommonsDatacommonsTriplesSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "dateAnnotationTags": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "dateAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "dateRangeAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "dateTimeAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "discoverSource": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "discussion": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "documentIntent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "dotsGaramondSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "dotsNewsstandSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "emailAddressAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "extractedBookInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "fatcatCompactDocClassification": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "fatcatSiteVerticalsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "firstseen": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "fontsAnalysisAnnotatorFontsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "forumRankingForumPostsSafeSearchAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "foundationSplinterSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "freshboxFreshboxArticleAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "geoPointAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "geoPointResolution": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "geostoreAddressProto": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "i2eV2ImageEntitiesInfos": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageContentAnnotationLabels": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageContentColorSearchColorDetectionResults": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageDataList": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageExtraImageExtraTerms": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageMonetizationFeaturedDocumentProperties": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageMustangFaviconInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageMustangWebsearchImageSnippetResponse": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualityLabelmakerDocMediaLabels": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualityLandingPageProtoLandingPageSalientTextSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualityLayoutDocument": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualityRichdataProtoImageAnchor": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualityRichdataProtoRichdata": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualitySalientTermsImageQuerySmearingList": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualitySalientTermsImageSalientTermSetMap": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualitySensitiveFaceSkinToneSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageQualitySensitiveMediaOrPeopleEntities": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageRepositoryGeolocation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageRepositoryPicasaGeoData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageSearchRejectedImageInfoList": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "imageStockStockImageAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsAnnotationMeta": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsAppMarketAppMarketAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsAppsCacheColonAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsAppsDocRestrictionsDocPreviewRestrictionsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsAutomobileVinAnnotatorAutomobileVinAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsCanonicalUrl": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsCleanTextProto": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsCollectionsDocCollections": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsCommentBlockGroups": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsDatasetModelAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsDatesDateTimes": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsDocImportance": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsDocRestrictionsInDocRestrictionsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsEntityPage": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsFeedbackSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsIBertEmbeddingAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsImageRepositoryImageLicenseInfoAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsPcuAmpError": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsPcuSignedExchangeInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsPersonPersonAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsSduPageTypeAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsSocialLinksSocialLinksAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsSubscribewithgoogleSwgAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsTwitterEmbeddedTweetsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsTypedNumberTypedNumberAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsWaPassagesQueryToPassageAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAnnotationsWaPassagesTrimmedQueryToPassageAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAppsAffiliatedInstantAppInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingAppsMergedAppInfoAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingBadpagesBadPageParseResult": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingBadpagesCollapserInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingBadpagesIndexSelectionRemoval": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingBadpagesLoginPageResult": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingBadpagesUnifiedModelFeatures": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingBeringPublisherOnPageAdsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingCenterpieceCenterPieceAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingCenterpieceCenterpieceChecksums": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingCenterpieceComponentLearningSource": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingCenterpieceSectionTitleAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingConverterContentGenerationInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingConverterContentParserResults": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingConverterFileMetaInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingConverterLinkRelOutlinks": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingConverterMetaDetectorsResultsProto": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingConverterPdfFileMetaInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingConverterPdfPageAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingCustomCorpusCdmAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingDeepwebStoreListAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingDocjoinerServingTimeClusterIds": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingDocjoinerWikiInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingDocskeletonRepeatedPatternRepeatedPatternAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingDupsLocalizedLocalizedCluster": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingFreshSchedulerFreshSchedulerDoubleInstantExtension": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingFreshSchedulerOutlinkDiscoveryHistoricalHubsSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingImagesRelatedImageSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantActiveClusterScorerSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantBaseReindexWhitelistData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantClusterScorerArticle": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantClusterScorerSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantHistoricalContentSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantNewsHighlyCitedDocumentSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantNewsImagesInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingInstantSignalSourceTagsExtension": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingLatticeLatticeAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMetricsUrlIndexingProps": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMlDomNodeSegments": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMlEntityInfoboxes": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMlPageStructure": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMlSemanticArticle": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMlShoppingUniverseAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMlVerticalVerticalClassificationResult": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMlVerticalVerticalClassificationV2": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMobileClientDependentInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMobileInterstitialsProtoDesktopInterstitials": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMobileObelixInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMobileSmartphoneContentAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMobileSmartphonePatternClassification": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingMobileSpeedPageSpeedFieldData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingPlusonePlusOneSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingPlusoneSocialScoreSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingRaffiaDataRecoveryInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingRaffiaIndexingIntermediate": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingRaffiaMediaProcessingMetadata": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingRaffiaOverlayCDocAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionAcquisitionMetadataAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionDoubleIndexingExtension": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionFastServingPush": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionFreshdocsPassthroughExtension": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionImageImageSelectionAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionLanguageExtension": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionPriorScorerParameterSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionProcessingPriorityExtension": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionProtoBasePromotionInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSelectionTensorFlowExtension": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSignalAggregatorUrlPatternSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSignalsAccumulatedOnlineSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSignalsImpressionsPerDayContainer": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSocialCountsSocialWidgetsIndicator": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSpeechGoldminePodcastAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingSpeechSpeechPagePropertiesProto": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingThirdpartyThirdPartyInputs": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingUgcPageParamInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingUnionKeyData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingUrlPatternUrlTreeUrlPatternAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingVideosVideoAnchorSourceInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingVideosVideoPlaylistAnchorSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "indexingWebChannelsWebChannelAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "infoextractionPinpointPinpointAnnotationSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "infoextractionPinpointPinpointSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "instantChromeViews": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
                 "instantNavboost": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "knowledgeGraphAcquisitionFeedsQuotesQuotesAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsDocumentSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsFactEvaluationSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsHtmlTableSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsKatsSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsLocalizedFact": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsObjectAnnotationsSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsProductCompositionSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsServingData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsShoppingSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsStructuredSnippetsSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsUdrExtraFactData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsUdrExtraFactMentionData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsUniversalFactMetadata": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsUniversalFactScores": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsUniversalTableSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningFactsWebKvSiteGroupSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningShoppingBrowseonomyData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMiningShoppingTwdModelVersions": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMumStoryTeaserAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMumStorytimeStampEngagementAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeMumStorytimeStampQualityAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeTablesTableInternalData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeTablesUniversalTableAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeTasksUniversalTaskAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "knowledgeTpfHowtodoHowtoVideoAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "langIdLangReasonerDocumentLanguages": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "lensVsaiDatasets": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "localsearchAuthoritySiteAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "localyp": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "mapsSyntheticsGeoDocFetchKey": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "measurementAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "metawebExtractionDocumentEvidence": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "modernFormatContent": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "navBoostDocument": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "navboost": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo",
-                    "description": "LINT.IfChange"
+                    "description": "BEGIN DATA FIELDS"
+                },
+                "newsAnnotationsContentAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCorpusHubPageAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCorpusLeafPageAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCorpusNewsAggregateSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCorpusNewsCorpusAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCorpusNewsCorpusRootAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo",
+                    "description": "END DATA FIELDS"
+                },
+                "newsCorpusNewsCorpusStatusAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCorpusNewsinessAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCorpusPositionRankAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsCrawlFilterNewsLinkCrawlSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsExtractionNewsPbeAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNarIndexingMetadata": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNarRow": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNarRowContainer": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNearDupsInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNewromanIndexingNewRomanSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNewsArticleChecksum": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNewsClassifications": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNewsContentSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsNewsForEducationReadingStatistics": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsVideosNewsAnchorSourceInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "newsVideosNewsVideoAnnotationSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "nlpAtcClaraAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "nlpSaftDocument": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "nlpSaftNlxDocAnnotatorMigration": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "nlpSaftRodinClassification": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "nlpSentimentSentimentAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "nlxDocAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "noindexedImageDataList": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "numberAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanLibrarianBookMetadata": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanLibrarianPopulatorData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanLibrarianPopulatorPageData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataAllItemSpecificBibdatas": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataAvailabilityInfoComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataAvailabilitySnapshot": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataAvailabilitySnapshotHolder": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataBibkeyComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataClusterHorizontalReference": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataClusterRecord": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataClusterVolumes": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataClusteringSeriesSeriesInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataClusteringTomeHorizontalLinkDescriptor": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataContributorLinks": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataItemSpecificBibdataComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataKgTopicLinks": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataLanguageInfoComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataMaterialInfoComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataParsedAccessTerms": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataParsedSuDoc": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataPatentPublicationDetails": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataPhysicalMeasurementsComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataPublicDomainInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataPublicationDetailsComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataRightsComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataSeriesInfoComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataTomeDetailsComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataTomeMembersComponent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanMetadataTomePriceInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanReviewsForWork": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "oceanRightsOptOutRequest": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "officialPagesQuerySet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "perDocLangidData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "personalizationGameWebeventsConsolidatedEvents": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "personalizationGameWebeventsEvent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "personalizationGameWebeventsEvents": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "photosGeoAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "predictedAuthenticity": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "priceAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityAnchorsOutdegreeOutdegreeInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityAnimaLivewebLivewebAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityAnimaRoutinesRoutinesPropertiesProto": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityAuthorityTopicEmbeddings": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityAuthorshipAuthorAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityBreadcrumbsBreadcrumbAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityCalypsoAppsLink": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityChardDocument": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityChardPredictedQueryFringeScore": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityChardPredictedXlq": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityContraSelectedAttributions": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityCopiaFireflySiteInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityDiscoverUgcScatScatEmbeddingAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityDniNewsstandPcu": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityDniPcuAuxiliaryData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityDniPcuMetaAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityDniPcuParsedData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityDniPcuRawData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityExploreQueryableFeedEcsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityExploreQueryableFeedHashtagAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityExploreQueryableFeedHashtagListAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityExploreQueryableFeedTopicFeedScoringSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityFreshnessAbacusInstantNegativeClicksInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityFringeFringeQueryPrior": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityGeoBrainlocGoldmineBrainlocAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityGeoLoglocGoldmineDocumentLocationAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityHistoricalContentAge": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityHorizonProtoHorizonEmbeddings": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityHorizonRecordInfoAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityImprovDocToQueries": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityImprovImprovAnchors": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityLisztomaniaDocument": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNavboostCrapsCrapsData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNavboostCrapsCrapsPatternSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNegativeClicksNegativeClicksInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNlqStructuredSearchAnnotationAnalysisAutomaticExtractionAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNlqStructuredSearchListingPagesListingPageAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNsrDokiAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNsrNsrData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNsrNsrSitechunksAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNsrPairwiseqPairwiseQData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNsrPqData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNsrSiteAuthority": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityNsrUvSitechunksAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityOrbitAsteroidBeltIntermediateDocumentIntentScores": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPagemasterPagemasterAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPanopticIndexingDiscoverCorpusAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPanopticIndexingDiscoverDocumentSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPanopticIndexingPanopticAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPanopticStorytimeAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPanopticStorytimeScoringSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPanopticVoiceUgcAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPeoplesearchNamedetectorNameOccurrenceAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPopfeedsChromeBackgroundAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPopfeedsHubDataAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPopfeedsUrlPredictionAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPopfeedsUrlSourceAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPricedetectorKefirPriceAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityPricedetectorProductBlockAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityProseJsonLdAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityProseThumbnailSelection": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityQ2QualityBoost": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityQ2SiteQualityFeatures": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityRealtimeBoostRealtimeBoostEvent": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityRealtimeBoostRealtimeBoostResponse": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityRealtimeBoostSeismographEventAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityRealtimeRealtimeResultInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityRealtimeRtFactAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityResultFilteringIndexingClusterAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityRichsnippetsAppsProtosApplicationInformationAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityRodinRodinSiteSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySalientCountriesSalientCountrySet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySalientStructuresSalientStructureSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySalientStuffSalientStuffSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySalientTermsQuerySmearingModel": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySalientTermsSalientTermSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySearchoversiteAnnotatorStructuredResultsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySherlockKnexAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityShoppingProductReview": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityShoppingProductReviewPage": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityShoppingShoppingProductReviewAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySimilarpagesRelatedInfoSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySitemapDocument": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySitemapThirdPartyCarouselsItemLists": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySixfaceSixfaceUrlData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySnippetsHiddenTextHiddenSpanAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySnippetsListSnippetsAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySnippetsMetadescriptionDuplicateMetaSiteSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySnippetsSnippetSpansInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySosGoldmineSosAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualitySummarySummary": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityTangramInformationTypes": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityTimebasedTimeSensitivityTimeSensitivityAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityTitlesAlternativeTitlesInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityTitlesSitelinksTargetTitleInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityTwiddlerDomainClassification": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityViewsAnswersAnswerAnnotationInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityVisualwebVisualWebAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityVisualwebVisualWebModelsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityWebanswersAltTitleSaftDoc": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityWebanswersTranscriptAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityWebfeederDocEmbedding": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "qualityWebshineDocResources": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "rankBoostDocAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
                 "rankembed": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "relativeDateAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsAddressAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsAmenitiesAmenitiesAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsCrawzallAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsDiscussionThreadDiscussionViewProto": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsLicensedResources": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsListFilterAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsListSummaryAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsMicrodataMicrodataAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsMicroformatsHproduct": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsMicroformatsMicroformatAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsPhoneTypePhoneTypeAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsRdfaRdfaAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsRodinArticleAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSectionHeadingAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSnippetSegmentSnippetSegmentAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSporeAuthoritySignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSporeDeeplinkAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSporeExtractorTopicAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSporeExtractorTripleAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSporeSporeEtlAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsSporeSporeEtlInputAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsStorehoursStoreHoursAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsVerseAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryAnnotationsWebanswersContextItemAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryProtiumEncyclojoinsEncycloJoin": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryProtiumGoldmineTriplificationResult": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryProtiumGoldmineTypeAssertionOutput": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryProtiumWebkvWebKv": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryProtiumWikiaWikiaInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryUpdaterIndexSelectionAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefEntityJoin": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefExperimentalWebrefEntitiesAttachment": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefGraphMention": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefJuggernautIndices": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefPageClassificationAnchorSignalsSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefPageClassificationSignalsSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefPiannoDocumentIntents": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefPiannoTvSeasonEpisode": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefPreprocessingReferencePageCandidateList": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefReconcileResponse": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefRefconJugglerReferencePageMappings": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefReferencePagesClassifierScoredPage": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefSalientEntitySet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefUndermergedEntities": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefUniversalEmbeddingRetrievalDebug": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefWebitIntermediaryMids": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefWebitScopeFprint": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefWebitScopeSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefWebitTripleSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefWebrefEntities": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebrefWebrefStatus": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebtablesDataTableAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebtablesDataTableMidAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWebtablesTranslationMessage": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaAliasList": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaAnnotatorWikipediaPageComponentAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaSentenceCompressionAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaWikiJoin": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaWikiMapperTripleSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaWikibaseEntity": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaWikidataOrgTripleSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "repositoryWikipediaWikitrustWikiTrustInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "researchCoauthorOpinionAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "researchStructuredDataInadvertentAnchorScoreAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "researchStructuredDataKnowledgeExplorationAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "researchStructuredDataNewsEmbeddingAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "richsnippetsDataObject": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "richsnippetsFeedPageMap": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "richsnippetsPageMap": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "richsnippetsPageMapAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "richsnippetsSchemaThing": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "rosettaLanguage": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "safesearchPageClassifierOutput": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "safesearchSafeSearchInternalPageSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "scienceIndexSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "searchEngagementHighlightSharedHighlightSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "searcharSearchArPipelineSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "shoppingQualityShoppingSiteClassifier": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "shoppingQualityShoppingSiteClassifierShopfab": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "shoppingWebentityShoppingAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "sitemapsSitemapsSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "smearingSmearedTerms": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "socialPersonalizationKnexAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamBrainSpamBrainData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamBrainSpamBrainPageClassifierAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamContentAnchorDist": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamContentAuthenticAuthenticTextAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamContentImageMapPb": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamContentSiteAgeStats": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamCookbookCookbookAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamCookbookCookbookSitechunkAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamFatpingIndexFeed": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamGodclusterAffIdAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamGodclusterServerHeaderAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamGooglebombsGooglebombsAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamHackedSitesDocSpamInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamHackedSitesGpgbGpgbNgramStats": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamHackedSitesWordFrequencies": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamJsJsInfo": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamScamScamness": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamScamUnauthoritativeSite": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "spamTokensSpamTokensAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "tableTalkStrideOfferPagePriceAnnotation": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "tasksTabaTabaDocSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "telephoneNumberAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "timeAnnotationTags": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "timeAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "timeRangeAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "travelAssistantTravelDocClassification": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "udrConverterDocumentShoppingData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "udrConverterOffer": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "udrConverterProductBlockData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "udrProtoDetailedEntityScores": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "udrProtoOverlay": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "udrProtoWebrefMention": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "universalFacts": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "unwantedImageDataList": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "uriAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "utilStatusProto": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "verticalsDiscussionDiscussionAnnotationTag": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlAutomatedAudioExtractionSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlAutomatedExtractionSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlDomainVideoClickData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlVideoClickData": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlVideoSalientTermSet": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlVideoScoringSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlWatchPagePatternClassification": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoCrawlYoutubeEmbedSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "videoScoringSignal": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 },
+                "videoWebGallery": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "videoYoutubeLiveCardioCardioStats": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
                 "volt": {
                     "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "watchpageLanguageWatchPageLanguageResult": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "websitetoolsFeedsAnnotationsFeedContentAnnotations": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "websitetoolsFeedsLinkedFeedLinkedFeed": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "websitetoolsFeedsPodcastPodcastSignals": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "websitetoolsFeedsSporeFeedsSporeTriples": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "whatshappStrideExtractions": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "youtubeAlexandriaYoutubeBody": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
+                },
+                "youtubeAlexandriaYoutubeSignal": {
+                    "$ref": "IndexingDocjoinerDataVersionVersionInfo"
                 }
             },
             "type": "object"
@@ -60197,6 +62975,16 @@
                         "Gibberish detection ran, but failed. Consider this not gibberish."
                     ],
                     "type": "string"
+                },
+                "numGibberishSegments": {
+                    "description": "The number of the above segments that were classified as gibberish.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "numSegmentsClassified": {
+                    "description": "The number of ASR segments that were sent for classification.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -76164,14 +78952,12 @@
                     "enum": [
                         "NO_EQUIVALENT",
                         "EQUIVALENT",
-                        "MUNIN_SYNONYM",
-                        "SYNONYM"
+                        "MUNIN_SYNONYM"
                     ],
                     "enumDescriptions": [
                         "Not equivalent.",
                         "Equivalent to the other entity.",
-                        "The related entity is a synonym added to Munin interpretation.",
-                        "The related entity is a synonym."
+                        "The related entity is a synonym added to Munin interpretation."
                     ],
                     "type": "string"
                 },
@@ -78624,6 +81410,8 @@
                         "GSOX_MOCHI",
                         "PMW_TI",
                         "ACCESSIBILITY_TRACKER",
+                        "DUCKIEWEB",
+                        "MATTERSPACE",
                         "DEPRECATED_QUICKSTART_FLUME",
                         "DUO_CLIENT",
                         "ALBERT",
@@ -79023,7 +81811,7 @@
                         "Memegen! https://memegen.googleplex.com Team contact: memgegen-team@google.com",
                         "Society App http://go/society Team contact: society-team@google.com",
                         "Society chat application. http://go/society Team contact: society-team@google.com",
-                        "Search Highlight http://go/seng-highlight Team contact: search-engagement-team@google.com",
+                        "Search One Presence (Formerly Search Engagement Highlight) http://go/dumpling Team contact: team-dumpling@google.com",
                         "YouTube Live Chat. http://go/livechat-redesign Team contact: yt-live-chat@google.com",
                         "YouTube Live Activity log. http://go/live-chat-history-design Team contact: yt-live-chat@google.com",
                         "YouTube Live Takeout. http://go/livechat-takeout Team contact: yt-live-chat@google.com",
@@ -79267,6 +82055,8 @@
                         "Gsox Mochi Team contact: fintechops-eng@google.com",
                         "Pmw Ti Team contact: pmw-ti",
                         "Accessibility Tracker Team contact: a11y-tracker-eng@google.com",
+                        "Duckieweb Team contact: workflow-horizontals-core@google.com",
+                        "Matterspace Team contact: legalworks-elm-eng@google.com, rajapate@google.com",
                         "",
                         "Duo Client Team contact: duo-eng@google.com",
                         "Project albert (go/albert-frontend) Team contact: albert-eng@google.com",
@@ -79534,7 +82324,7 @@
             "type": "object"
         },
         "PerDocData": {
-            "description": "=========================================================================== # Make sure you read the comments in the bottom before you add any new field. NB: As noted in the comments, this protocol buffer is used in both indexing and serving. In mustang serving implementations we only decode perdocdata during the search phase, and so this protocol should only contain data used during search. See mustang/repos_www/attachments.proto:{MustangBasicInfo,MustangContentInfo} for protocols used during search and/or docinfo. Next available tag deprecated, use this (and look for commented out fields): blaze-bin/net/proto_compiler/protocol-compiler --freetags \\ indexer/perdocdata/perdocdata.proto Next tag: 222",
+            "description": "=========================================================================== # Make sure you read the comments in the bottom before you add any new field. NB: As noted in the comments, this protocol buffer is used in both indexing and serving. In mustang serving implementations we only decode perdocdata during the search phase, and so this protocol should only contain data used during search. See mustang/repos_www/attachments.proto:{MustangBasicInfo,MustangContentInfo} for protocols used during search and/or docinfo. Next available tag deprecated, use this (and look for commented out fields): blaze-bin/net/proto_compiler/protocol-compiler --freetags \\ indexer/perdocdata/perdocdata.proto Next tag: 223",
             "id": "PerDocData",
             "properties": {
                 "BlogData": {
@@ -82745,10 +85535,6 @@
             "description": "A protocol buffer to store the url, referer and porn flag for a url. and an optional image score. Next available tag id: 51.",
             "id": "PornFlagData",
             "properties": {
-                "coclickBrainScores": {
-                    "$ref": "ImageSafesearchContentBrainPornAnnotation",
-                    "description": "Aggregated brain_porn_scores for navboost co-clicked images. Historical: this signal is deprecated and no longer populated as of 2020-12-01. Refer to b/172897542 for more information."
-                },
                 "csaiScore": {
                     "description": "Score predicting how likely an image is offensive or suggestive about CSAI (child sexual abuse imagery).",
                     "format": "float",
@@ -83255,7 +86041,7 @@
             "type": "object"
         },
         "PtokenPToken": {
-            "description": "PToken expresses policy-relevant properties of the data objects being processed and stored in Google's production systems. See go/ptoken to learn more. PTokens are intentionally opaque: go/ptokens-are-opaque. The following should be considered implementation details. Next ID: 8 INTERNAL: If both the Scalar and the Compound extensions are populated, we use the Compound and discard the Scalar. In principle, this should never happen.",
+            "description": "PToken expresses policy-relevant properties of the data objects being processed and stored in Google's production systems. See go/ptoken to learn more. PTokens are intentionally opaque: go/ptokens-are-opaque. The following should be considered implementation details. Next ID: 9 INTERNAL: If both the Scalar and the Compound extensions are populated, we use the Compound and discard the Scalar. In principle, this should never happen.",
             "id": "PtokenPToken",
             "properties": {},
             "type": "object"
@@ -84008,6 +86794,10 @@
                         "HEADPHONE_PERSONAL_RESULTS_OPTIN",
                         "DISCOVERY_SPARKS",
                         "SPOKEN_NOTIFICATIONS_OOBE_OPTIN",
+                        "SPOKEN_NOTIFICATIONS_BNS_MIGRATION_OOBE",
+                        "TRAIN_STATUS",
+                        "TRAIN_DELAY",
+                        "TRAIN_PLATFORM",
                         "UNIT_TESTING"
                     ],
                     "enumDescriptions": [
@@ -84424,6 +87214,10 @@
                         "Notification for Headphone Personal Response (HPR) opt-in: go/migrate-pr-notifs-tng-ma-prd",
                         "go/habits-sparks-design",
                         "Notification for Spoken Notifications OOBE opt-in. go/mapa-notifications-prd",
+                        "Notification for Spoken Notifications BNS Migration OOBE. go/bns-mapa-migration-notifications-prd",
+                        "Notifications for Train Journeys go/proactive-assistant-india-mvp",
+                        "",
+                        "",
                         "NOTE: This should always stay at the bottom of the list."
                     ],
                     "type": "string"
@@ -87390,7 +90184,7 @@
                             "GOOGLE_SCREENSHOT",
                             "MUGSHOT",
                             "CRIME",
-                            "SHOPPING_TOPN",
+                            "PRODUCT_TOPN",
                             "AUTHENTICITY",
                             "INFORMATION_SOURCE_OTHER",
                             "INFORMATION_SOURCE_NEWS_PUBLISHER",
@@ -87399,6 +90193,8 @@
                             "INFORMATION_SOURCE_GOVERNMENT",
                             "INFORMATION_SOURCE_UGC",
                             "INFORMATION_SOURCE_RESEARCH_INSTITUTE",
+                            "QNA",
+                            "UGC_DISCUSSION",
                             "RESERVED_FOR_NEW_ENUM_135",
                             "RESERVED_FOR_NEW_ENUM_136",
                             "RESERVED_FOR_NEW_ENUM_137",
@@ -87419,8 +90215,7 @@
                             "RESERVED_FOR_NEW_ENUM_152",
                             "RESERVED_FOR_NEW_ENUM_153",
                             "RESERVED_FOR_NEW_ENUM_154",
-                            "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_98",
-                            "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_99",
+                            "RESERVED_FOR_NEW_ENUM_155",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_100",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_101",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_102",
@@ -87547,7 +90342,7 @@
                             "This is an image intent",
                             "Image intent representing whether there is a mugshot in the image (or if the image is itself a mugshot).",
                             "Document intent representing whether a page is crime-related (go/crime-demotion-in-image-search-dd)",
-                            "Document intent representing whether a page is recommending best shopping products fulfilling certain application (e.g. \"best laptops for students\"). See go/shopping_topn_orbit.",
+                            "Document intents that provide analysis, opinions of a list of top-recommended products, and focus on multiple specific products individually. See go/sdu-shopping-page-intro#heading=h.r7a5gewp8do.",
                             "AuthenticityScore for document. see go/astar-dd.",
                             "Document intents for various information sources. They are used in Tangram Diversity. see tangram_diversity_annotation.proto.",
                             "",
@@ -87556,6 +90351,8 @@
                             "",
                             "",
                             "",
+                            "Question and Answer format discussion page. check go/orbit-doc-intents for detailed intent description.",
+                            "Document intent for whether a page is a ugc discussion. For the definition, please see the furball template go/ugc-discussion-template. Note that this is semantically the union of QNA and FORUM doc level intents. For the reason why we want it to be a single intent, see https://docs.google.com/document/d/1Ka3qcMWLvNHCZMomekHXXTumr_9g_tcgJ0BD6ev1HI4/edit?resourcekey=0-8r1KcmFaOH11GBK_yfipHA",
                             "========== Enums for new intents ========== Instructions: When adding a new intent, use the reserved enum number from the start of this list, and add a new reserved enum number to the end for the next person. There is a unit test that checks there are at least 20 reserved enums. See go/new-intentkeyenum for details.",
                             "",
                             "",
@@ -87576,6 +90373,7 @@
                             "",
                             "",
                             "",
+                            "",
                             "========== Enums for new large intents ========== Please ask orbit@ before using these.",
                             "",
                             "",
@@ -87604,8 +90402,6 @@
                             "",
                             "",
                             "",
-                            "",
-                            "",
                             "========== Enums for deleted intents ==========",
                             "",
                             "",
@@ -87725,7 +90521,7 @@
                             "GOOGLE_SCREENSHOT",
                             "MUGSHOT",
                             "CRIME",
-                            "SHOPPING_TOPN",
+                            "PRODUCT_TOPN",
                             "AUTHENTICITY",
                             "INFORMATION_SOURCE_OTHER",
                             "INFORMATION_SOURCE_NEWS_PUBLISHER",
@@ -87734,6 +90530,8 @@
                             "INFORMATION_SOURCE_GOVERNMENT",
                             "INFORMATION_SOURCE_UGC",
                             "INFORMATION_SOURCE_RESEARCH_INSTITUTE",
+                            "QNA",
+                            "UGC_DISCUSSION",
                             "RESERVED_FOR_NEW_ENUM_135",
                             "RESERVED_FOR_NEW_ENUM_136",
                             "RESERVED_FOR_NEW_ENUM_137",
@@ -87754,8 +90552,7 @@
                             "RESERVED_FOR_NEW_ENUM_152",
                             "RESERVED_FOR_NEW_ENUM_153",
                             "RESERVED_FOR_NEW_ENUM_154",
-                            "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_98",
-                            "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_99",
+                            "RESERVED_FOR_NEW_ENUM_155",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_100",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_101",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_102",
@@ -87882,7 +90679,7 @@
                             "This is an image intent",
                             "Image intent representing whether there is a mugshot in the image (or if the image is itself a mugshot).",
                             "Document intent representing whether a page is crime-related (go/crime-demotion-in-image-search-dd)",
-                            "Document intent representing whether a page is recommending best shopping products fulfilling certain application (e.g. \"best laptops for students\"). See go/shopping_topn_orbit.",
+                            "Document intents that provide analysis, opinions of a list of top-recommended products, and focus on multiple specific products individually. See go/sdu-shopping-page-intro#heading=h.r7a5gewp8do.",
                             "AuthenticityScore for document. see go/astar-dd.",
                             "Document intents for various information sources. They are used in Tangram Diversity. see tangram_diversity_annotation.proto.",
                             "",
@@ -87891,6 +90688,8 @@
                             "",
                             "",
                             "",
+                            "Question and Answer format discussion page. check go/orbit-doc-intents for detailed intent description.",
+                            "Document intent for whether a page is a ugc discussion. For the definition, please see the furball template go/ugc-discussion-template. Note that this is semantically the union of QNA and FORUM doc level intents. For the reason why we want it to be a single intent, see https://docs.google.com/document/d/1Ka3qcMWLvNHCZMomekHXXTumr_9g_tcgJ0BD6ev1HI4/edit?resourcekey=0-8r1KcmFaOH11GBK_yfipHA",
                             "========== Enums for new intents ========== Instructions: When adding a new intent, use the reserved enum number from the start of this list, and add a new reserved enum number to the end for the next person. There is a unit test that checks there are at least 20 reserved enums. See go/new-intentkeyenum for details.",
                             "",
                             "",
@@ -87911,6 +90710,7 @@
                             "",
                             "",
                             "",
+                            "",
                             "========== Enums for new large intents ========== Please ask orbit@ before using these.",
                             "",
                             "",
@@ -87939,8 +90739,6 @@
                             "",
                             "",
                             "",
-                            "",
-                            "",
                             "========== Enums for deleted intents ==========",
                             "",
                             "",
@@ -88065,7 +90863,7 @@
                             "GOOGLE_SCREENSHOT",
                             "MUGSHOT",
                             "CRIME",
-                            "SHOPPING_TOPN",
+                            "PRODUCT_TOPN",
                             "AUTHENTICITY",
                             "INFORMATION_SOURCE_OTHER",
                             "INFORMATION_SOURCE_NEWS_PUBLISHER",
@@ -88074,6 +90872,8 @@
                             "INFORMATION_SOURCE_GOVERNMENT",
                             "INFORMATION_SOURCE_UGC",
                             "INFORMATION_SOURCE_RESEARCH_INSTITUTE",
+                            "QNA",
+                            "UGC_DISCUSSION",
                             "RESERVED_FOR_NEW_ENUM_135",
                             "RESERVED_FOR_NEW_ENUM_136",
                             "RESERVED_FOR_NEW_ENUM_137",
@@ -88094,8 +90894,7 @@
                             "RESERVED_FOR_NEW_ENUM_152",
                             "RESERVED_FOR_NEW_ENUM_153",
                             "RESERVED_FOR_NEW_ENUM_154",
-                            "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_98",
-                            "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_99",
+                            "RESERVED_FOR_NEW_ENUM_155",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_100",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_101",
                             "RESERVED_FOR_NEW_ENUM_LARGE_PLEASE_ASK_ORBIT_102",
@@ -88222,7 +91021,7 @@
                             "This is an image intent",
                             "Image intent representing whether there is a mugshot in the image (or if the image is itself a mugshot).",
                             "Document intent representing whether a page is crime-related (go/crime-demotion-in-image-search-dd)",
-                            "Document intent representing whether a page is recommending best shopping products fulfilling certain application (e.g. \"best laptops for students\"). See go/shopping_topn_orbit.",
+                            "Document intents that provide analysis, opinions of a list of top-recommended products, and focus on multiple specific products individually. See go/sdu-shopping-page-intro#heading=h.r7a5gewp8do.",
                             "AuthenticityScore for document. see go/astar-dd.",
                             "Document intents for various information sources. They are used in Tangram Diversity. see tangram_diversity_annotation.proto.",
                             "",
@@ -88231,6 +91030,8 @@
                             "",
                             "",
                             "",
+                            "Question and Answer format discussion page. check go/orbit-doc-intents for detailed intent description.",
+                            "Document intent for whether a page is a ugc discussion. For the definition, please see the furball template go/ugc-discussion-template. Note that this is semantically the union of QNA and FORUM doc level intents. For the reason why we want it to be a single intent, see https://docs.google.com/document/d/1Ka3qcMWLvNHCZMomekHXXTumr_9g_tcgJ0BD6ev1HI4/edit?resourcekey=0-8r1KcmFaOH11GBK_yfipHA",
                             "========== Enums for new intents ========== Instructions: When adding a new intent, use the reserved enum number from the start of this list, and add a new reserved enum number to the end for the next person. There is a unit test that checks there are at least 20 reserved enums. See go/new-intentkeyenum for details.",
                             "",
                             "",
@@ -88251,6 +91052,7 @@
                             "",
                             "",
                             "",
+                            "",
                             "========== Enums for new large intents ========== Please ask orbit@ before using these.",
                             "",
                             "",
@@ -88279,8 +91081,6 @@
                             "",
                             "",
                             "",
-                            "",
-                            "",
                             "========== Enums for deleted intents ==========",
                             "",
                             "",
@@ -88349,9 +91149,9 @@
                         "SEQUENCE",
                         "SEQUENCE_V2",
                         "FULL",
-                        "FULL_V2",
                         "META",
                         "LEADING_TEXT",
+                        "FULL_V2",
                         "SAFT_SENTENCE",
                         "RADISH_SENTENCE",
                         "RADISH_LIST",
@@ -88364,9 +91164,9 @@
                         "A sequence snippet is generated from query term matches (from meta and body sections) and typically consists of multiple tidbits. Currently we only keep one single best combination of the retrieved tidbits.",
                         "",
                         "A full snippet is also generated from query term matches. Unlike the sequence snippet, this only consists of one expanded tidbit that are scored as the best single tidbit among the retrieved tidbits.",
-                        "",
                         "This is a leading text of meta description.",
                         "This is a leading text of main body text (skipping headers), and its starting position is typically identified in the indexing phase.",
+                        "Similar to FULL snippet, but this allows multiple candidates.",
                         "saft sentences.",
                         "Candidates created from radish attachment.",
                         "",
@@ -89792,7 +92592,7 @@
                     "type": "string"
                 },
                 "source": {
-                    "description": "LINT.ThenChange(//depot/google3/assistant/verticals/communication/\\ fulfillment/proto/contact_logging_enums.proto, //depot/google3/assistant/api/dialog_state/values/person.proto) Data source of the contact data.",
+                    "description": "LINT.ThenChange(//depot/google3/assistant/verticals/communication/\\ fulfillment/proto/contact_logging_enums.proto, //depot/google3/assistant/api/dialog_state/values/person.proto, //depot/google3/assistant/context/proto/person.proto) Data source of the contact data.",
                     "enum": [
                         "FOCUS_CONTACT",
                         "DEVICE_CONTACT",
@@ -89804,7 +92604,8 @@
                         "SHARED_CONTACT",
                         "FAMILY_MEMBER",
                         "SHARED_DEVICE_USER",
-                        "ON_DEVICE_CONTACT_LOOKUP"
+                        "ON_DEVICE_CONTACT_LOOKUP",
+                        "APP_SEARCH_CONTACT"
                     ],
                     "enumDescriptions": [
                         "Contacts from Focus",
@@ -89817,7 +92618,8 @@
                         "Contacts shared from other users. See go/multi-user-shared-contact.",
                         "People in the user's family group in http://families.google.com who are not contacts.",
                         "People who share a device with the user who are not contacts.",
-                        "Contacts from on device lookup during contact fulfillment."
+                        "Contacts from on device lookup during contact fulfillment.",
+                        "Contacts from AppSearch."
                     ],
                     "type": "string"
                 }
@@ -89879,7 +92681,7 @@
                     "type": "string"
                 },
                 "versionAndImprovInfo": {
-                    "description": "First 7 bits encode the version, then each chunck of 5 bits encode the index of a potential improv query (lsb to msb) -------|-----|-----|-----|-----|----- version| id1 | id2 | id3 | id4 | id5 where id1 is the index of the first improv query in the improv debug table. As of cl/270008220, this field only contains the version info. For backward compatibility, version still only uses the first 7 bits, and is still prepended by 5 1 bits.",
+                    "description": "First 7 bits encode the version, then each chunk of 5 bits encode the index of a potential improv query (lsb to msb) -------|-----|-----|-----|-----|----- version| id1 | id2 | id3 | id4 | id5 where id1 is the index of the first improv query in the improv debug table. As of cl/270008220, this field only contains the version info. For backward compatibility, version still only uses the first 7 bits, and is still prepended by 5 1 bits.",
                     "format": "uint32",
                     "type": "integer"
                 }
@@ -90967,6 +93769,10 @@
                     "format": "int32",
                     "type": "integer"
                 },
+                "nonDisplayableStaleAvailability": {
+                    "$ref": "ShoppingWebentityShoppingAnnotationOfferAvailabilityInfo",
+                    "description": "This is experimental, not filled in yet and not intended to be used. Please contact buyable-corpus@ before considering using this field."
+                },
                 "offerDocid": {
                     "format": "uint64",
                     "type": "string"
@@ -91078,6 +93884,12 @@
                     "format": "uint64",
                     "type": "string"
                 },
+                "images": {
+                    "items": {
+                        "$ref": "ShoppingWebentityShoppingAnnotationProductImage"
+                    },
+                    "type": "array"
+                },
                 "locale": {
                     "$ref": "QualityShoppingShoppingAttachmentLocale"
                 },
@@ -91598,6 +94410,7 @@
                         "LSU_HIGH_PRECISION_PUBLICATION_MARKUP_SUPPORTED_BY_ANNOTATION",
                         "LSU_HIGH_PRECISION_ANNOTATION_WITH_PATTERN_BYLINE_TAG",
                         "LSU_HIGH_PRECISION_RELIABLE_CONTENT_AGE_SUPPORTED_BY_ANNOTATION",
+                        "LSU_HIGH_PRECISION_CREATION_DATE_OF_UGC_PAGE",
                         "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_LOW_SUPPORT",
                         "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_MEDIUM_SUPPORT",
                         "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_HIGH_SUPPORT",
@@ -91621,6 +94434,7 @@
                         "The signal comes from publication markup date supported by annotation.",
                         "The signal comes from date annotation often selected as a byline.",
                         "The signal comes from ContentAge that's supported by date annotation.",
+                        "The signal comes from creation date of UGC page.",
                         "",
                         "",
                         "",
@@ -91679,6 +94493,7 @@
                         "LSU_HIGH_PRECISION_PUBLICATION_MARKUP_SUPPORTED_BY_ANNOTATION",
                         "LSU_HIGH_PRECISION_ANNOTATION_WITH_PATTERN_BYLINE_TAG",
                         "LSU_HIGH_PRECISION_RELIABLE_CONTENT_AGE_SUPPORTED_BY_ANNOTATION",
+                        "LSU_HIGH_PRECISION_CREATION_DATE_OF_UGC_PAGE",
                         "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_LOW_SUPPORT",
                         "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_MEDIUM_SUPPORT",
                         "LSU_MEDIUM_PRECISION_FRESH_SALIENT_ANNOTATION_HIGH_SUPPORT",
@@ -91702,6 +94517,7 @@
                         "The signal comes from publication markup date supported by annotation.",
                         "The signal comes from date annotation often selected as a byline.",
                         "The signal comes from ContentAge that's supported by date annotation.",
+                        "The signal comes from creation date of UGC page.",
                         "",
                         "",
                         "",
@@ -93163,6 +95979,7 @@
                         "VIDEO_OCR",
                         "IMAGE_OCR",
                         "LENS",
+                        "VIDEO_DESCRIPTION",
                         "ONLY_LOOKUP_METADATA",
                         "EMBEDDED_CONTENT"
                     ],
@@ -93208,6 +96025,7 @@
                         "",
                         "",
                         "",
+                        "",
                         "Entries which are created in order to instruct the fprint-loader to load metadata for the contained ngrams.",
                         "The embedded content in the document (e.g., within json scripts)."
                     ],
@@ -93676,7 +96494,7 @@
             "type": "object"
         },
         "RepositoryWebrefDetailedEntityScores": {
-            "description": "Detailed scores about the topicality of an entity. Next available tag: 16",
+            "description": "Detailed scores about the topicality of an entity. Next available tag: 17",
             "id": "RepositoryWebrefDetailedEntityScores",
             "properties": {
                 "connectedness": {
@@ -93716,6 +96534,10 @@
                     "format": "float",
                     "type": "number"
                 },
+                "profileUrl": {
+                    "description": "Contains the link to the author's profile url on the platform.",
+                    "type": "string"
+                },
                 "referencePageScores": {
                     "$ref": "RepositoryWebrefReferencePageScores",
                     "description": "Signals used for mining new reference pages, set by the reference-page-scorer processor (that is turned off by default). This field is not populated, except for special reference page extraction runs."
@@ -94584,7 +97406,7 @@
                     "type": "boolean"
                 },
                 "isDropped": {
-                    "description": "Documened at: repository/webref/universal/webref_data/enricher/entity-data.h",
+                    "description": "Documented at: google3/repository/webref/enricher/core/data/scored_entity_name.h",
                     "type": "boolean"
                 },
                 "isMatchlessResultContext": {
@@ -94592,7 +97414,7 @@
                     "type": "boolean"
                 },
                 "isPruned": {
-                    "description": "Documened at: repository/webref/universal/webref_data/enricher/entity-data.h",
+                    "description": "Documented at: google3/repository/webref/enricher/core/data/scored_entity_name.h",
                     "type": "boolean"
                 },
                 "mid": {
@@ -95105,6 +97927,7 @@
                         "VIDEO_OCR",
                         "IMAGE_OCR",
                         "LENS",
+                        "VIDEO_DESCRIPTION",
                         "ONLY_LOOKUP_METADATA",
                         "EMBEDDED_CONTENT"
                     ],
@@ -95150,6 +97973,7 @@
                         "",
                         "",
                         "",
+                        "",
                         "Entries which are created in order to instruct the fprint-loader to load metadata for the contained ngrams.",
                         "The embedded content in the document (e.g., within json scripts)."
                     ],
@@ -95213,7 +98037,7 @@
                     "type": "array"
                 },
                 "areaKm2": {
-                    "description": "Area in km^2 of the feature if the feature has polygon.",
+                    "description": "Area in km^2 of the feature if the feature has polygon. Only set by qrefmetadata.",
                     "format": "double",
                     "type": "number"
                 },
@@ -95417,13 +98241,6 @@
                         "$ref": "RepositoryWebrefLatentEntity"
                     },
                     "type": "array"
-                },
-                "latentMid": {
-                    "description": "List of broader MIDs from the Sports Hierarchy. Named incorrectly, it does not contain all latent mids.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -95666,6 +98483,7 @@
                         "UNKNOWN",
                         "DEFINITE",
                         "INDEFINITE",
+                        "FEMININE_DETERMINER",
                         "ABLATIVE",
                         "ADESSIVE",
                         "ALLATIVE",
@@ -95766,6 +98584,7 @@
                         "",
                         "Articles or markers that express the definitess of a noun (see go/wordgraph/definiteness).",
                         "Articles or markers that express the indefiniteness of a noun (see go/wordgraph/definiteness).",
+                        "Determiners that mark *unambiguously* the feminine gender of the expression (e.g.: \"*une* artiste\")",
                         "Linguistic markers that express the movement from a place (like the English preposition *from* in a sentence like \"I came *from* my place\").",
                         "Linguistic markers that express the location *near* a place (like in the English preposition *near* in a sentence like \"I am near the house\").",
                         "Linguistic markers that express the movement towards a place (like the English preposition *to* in a sentence like \"I go *to* my house\").",
@@ -97622,7 +100441,8 @@
                             "VIDEO_TRANSCRIPT",
                             "VIDEO_OCR",
                             "IMAGE_OCR",
-                            "LENS"
+                            "LENS",
+                            "VIDEO_DESCRIPTION"
                         ],
                         "enumDescriptions": [
                             "The document content (excluding the title) or the text of the query.",
@@ -97641,7 +100461,8 @@
                             "The transcript of a video.",
                             "The ocr text of a video.",
                             "The ocr text of an image.",
-                            "Fake segment that contains all Lens entity mids in a given image."
+                            "Fake segment that contains all Lens entity mids in a given image.",
+                            "The video description coming from VideoScoringSignal"
                         ],
                         "type": "string"
                     },
@@ -97825,7 +100646,8 @@
                         "VIDEO_TRANSCRIPT",
                         "VIDEO_OCR",
                         "IMAGE_OCR",
-                        "LENS"
+                        "LENS",
+                        "VIDEO_DESCRIPTION"
                     ],
                     "enumDescriptions": [
                         "The document content (excluding the title) or the text of the query.",
@@ -97844,7 +100666,8 @@
                         "The transcript of a video.",
                         "The ocr text of a video.",
                         "The ocr text of an image.",
-                        "Fake segment that contains all Lens entity mids in a given image."
+                        "Fake segment that contains all Lens entity mids in a given image.",
+                        "The video description coming from VideoScoringSignal"
                     ],
                     "type": "string"
                 }
@@ -97880,7 +100703,8 @@
                         "VIDEO_TRANSCRIPT",
                         "VIDEO_OCR",
                         "IMAGE_OCR",
-                        "LENS"
+                        "LENS",
+                        "VIDEO_DESCRIPTION"
                     ],
                     "enumDescriptions": [
                         "The document content (excluding the title) or the text of the query.",
@@ -97899,7 +100723,8 @@
                         "The transcript of a video.",
                         "The ocr text of a video.",
                         "The ocr text of an image.",
-                        "Fake segment that contains all Lens entity mids in a given image."
+                        "Fake segment that contains all Lens entity mids in a given image.",
+                        "The video description coming from VideoScoringSignal"
                     ],
                     "type": "string"
                 }
@@ -98038,7 +100863,7 @@
             "type": "object"
         },
         "RepositoryWebrefSimplifiedCompositeDoc": {
-            "description": "Represents an information which is very close to composite doc, but compresses how the anchors are represented to save space. Next available tag: 15.",
+            "description": "Represents an information which is very close to composite doc, but compresses how the anchors are represented to save space. Next available tag: 16.",
             "id": "RepositoryWebrefSimplifiedCompositeDoc",
             "properties": {
                 "anchors": {
@@ -98102,7 +100927,10 @@
                     "description": "The URL, populated independently of whether we have a CompositeDoc proto. If the cdoc exists, the url is the same as CompositeDoc.doc.url.",
                     "type": "string"
                 },
-                "webrefOutlinks": {
+                "webrefOutlinkInfos": {
+                    "$ref": "RepositoryWebrefWebrefOutlinkInfos"
+                },
+                "webrefOutlinksLegacy": {
                     "$ref": "Proto2BridgeMessageSet"
                 }
             },
@@ -99930,6 +102758,10 @@
                     "format": "byte",
                     "type": "string"
                 },
+                "gfv": {
+                    "$ref": "ResearchScamGenericFeatureVector",
+                    "description": "The field isn't populated by default, but when enabled (eg, in the ground-truth pipeline), this field provides the original database GFV corresponding to this result."
+                },
                 "metadata": {
                     "description": "Metadata about the neighbor. This is returned under some configurations as a serialized proto. The specific proto depends on which metadata is configured to be returned.",
                     "format": "byte",
@@ -100681,7 +103513,7 @@
             "type": "object"
         },
         "ResearchScienceSearchReconciledMetadata": {
-            "description": "A proto for storing inferred and reconciled metadata for Science Search. Next available tag: 71",
+            "description": "A proto for storing inferred and reconciled metadata for Science Search. Next available tag: 72",
             "id": "ResearchScienceSearchReconciledMetadata",
             "properties": {
                 "alternateName": {
@@ -101044,6 +103876,11 @@
                         "type": "number"
                     },
                     "type": "array"
+                },
+                "versionsSimhash": {
+                    "description": "A simhash value of the fields used for identifying versions of a dataset. This will be used by the VersionClusterInfoWriter.",
+                    "format": "uint64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -101834,7 +104671,7 @@
             "type": "object"
         },
         "SafesearchVideoClassifierOutput": {
-            "description": "Flexible multi-vertical classification output. The output for each vertical should be defined as a proto extension to this proto. When defining an extension for a new vertical please follow the format: message NewVertical { extend safesearch.VideoClassifierOutput { optional NewVertical classifier_output_extension = ; } optional safesearch.VideoVerticalOutput vertical_output = 1; } SafeSearch verticals only: Please also update this message with a new extension declaration. For more details on extension declaration please refer to http://go/proto-proposals/extension-declarations. Please refer to http://go/proto2-extensions for details on message extensions. LINT.IfChange next extension id: 5",
+            "description": "Flexible multi-vertical classification output. The output for each vertical should be defined as a proto extension to this proto. When defining an extension for a new vertical please follow the format: message NewVertical { extend safesearch.VideoClassifierOutput { optional NewVertical classifier_output_extension = ; } optional safesearch.VideoVerticalOutput vertical_output = 1; } SafeSearch verticals only: Please also update this message with a new extension declaration. For more details on extension declaration please refer to http://go/proto-proposals/extension-declarations. Please refer to http://go/proto2-extensions for details on message extensions. LINT.IfChange next extension id: 6",
             "id": "SafesearchVideoClassifierOutput",
             "properties": {},
             "type": "object"
@@ -101936,6 +104773,10 @@
                 "AbstractText": {
                     "type": "string"
                 },
+                "AbstractTypeFromSource": {
+                    "description": "The original (unnormalized) type of an abstract. AbstractDisplay holds a normalized type deduced from things like tagnames, tag-attributes, keywords in documents or the placement of the abstract in the document. This field is meant for the type of the abstract identified explicitly by the source document. E.g., the value of the 'abstract-type' attribute from a tag in XML ('primary abstract', 'summary', 'highlights' etc.).",
+                    "type": "string"
+                },
                 "AlternateVersionID": {
                     "description": "Fingerprint of the URL after applying crawl and aggregate rewrites. Different citations with the same AlternateVersionID must have the same VersionID, but not necessarily vice versa. Omitted when identical to the VersionID.",
                     "format": "uint64",
@@ -101987,6 +104828,11 @@
                     "format": "int32",
                     "type": "integer"
                 },
+                "CitationSourceCrawlTimestamp": {
+                    "description": "Seconds since the epoch, should be consistent with CitationSourceUrl.",
+                    "format": "int64",
+                    "type": "string"
+                },
                 "CitationSourceUrl": {
                     "description": "url where record came from",
                     "type": "string"
@@ -102476,6 +105322,10 @@
                 },
                 "AbstractText": {
                     "type": "string"
+                },
+                "AbstractTypeFromSource": {
+                    "description": "The original (unnormalized) type of an abstract. AbstractDisplay holds a normalized type deduced from things like tagnames, tag-attributes, keywords in documents or the placement of the abstract in the document. This field is meant for the type of the abstract identified explicitly by the source document. E.g., the value of the 'abstract-type' attribute from a tag in XML ('primary abstract', 'summary', 'highlights' etc.).",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -104330,6 +107180,57 @@
             },
             "type": "object"
         },
+        "ShoppingWebentityShoppingAnnotationOfferAvailabilityInfo": {
+            "id": "ShoppingWebentityShoppingAnnotationOfferAvailabilityInfo",
+            "properties": {
+                "availability": {
+                    "enum": [
+                        "AVAILABILITY_UNKNOWN",
+                        "AVAILABILITY_IN_STOCK",
+                        "AVAILABILITY_LIMITED",
+                        "AVAILABILITY_OUT_OF_STOCK",
+                        "AVAILABILITY_BACKORDER",
+                        "AVAILABILITY_PREORDER",
+                        "AVAILABILITY_ON_DISPLAY_TO_ORDER"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ShoppingWebentityShoppingAnnotationProductImage": {
+            "description": "Images from the product-level representation (i.e. GPC). These images are currently only annotated 1) when no offers are available 2) on the product level",
+            "id": "ShoppingWebentityShoppingAnnotationProductImage",
+            "properties": {
+                "imageDocid": {
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "productImageType": {
+                    "enum": [
+                        "PRODUCT_IMAGE_TYPE_UNKNOWN",
+                        "PRODUCT_IMAGE_GPC",
+                        "PRODUCT_IMAGE_TYPE_MULTIBANG_ENTITY_INFERRED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ShoppingWebentityShoppingAnnotationProductRating": {
             "description": "Information about a rating provided for a product. This can represent an aggregated rating if count is set. Next Id: 7",
             "id": "ShoppingWebentityShoppingAnnotationProductRating",
@@ -104755,9 +107656,9 @@
                         "SEQUENCE",
                         "SEQUENCE_V2",
                         "FULL",
-                        "FULL_V2",
                         "META",
                         "LEADING_TEXT",
+                        "FULL_V2",
                         "SAFT_SENTENCE",
                         "RADISH_SENTENCE",
                         "RADISH_LIST",
@@ -104770,9 +107671,9 @@
                         "A sequence snippet is generated from query term matches (from meta and body sections) and typically consists of multiple tidbits. Currently we only keep one single best combination of the retrieved tidbits.",
                         "",
                         "A full snippet is also generated from query term matches. Unlike the sequence snippet, this only consists of one expanded tidbit that are scored as the best single tidbit among the retrieved tidbits.",
-                        "",
                         "This is a leading text of meta description.",
                         "This is a leading text of main body text (skipping headers), and its starting position is typically identified in the indexing phase.",
+                        "Similar to FULL snippet, but this allows multiple candidates.",
                         "saft sentences.",
                         "Candidates created from radish attachment.",
                         "",
@@ -105774,6 +108675,7 @@
             "type": "object"
         },
         "SocialGraphApiProtoPartialNameOptions": {
+            "description": "For general information about Limited Profiles, see go/limited-profiles-api. LINT.IfChange",
             "id": "SocialGraphApiProtoPartialNameOptions",
             "properties": {
                 "language": {
@@ -107211,6 +110113,81 @@
             },
             "type": "object"
         },
+        "SpeechWaveHeader": {
+            "description": "A general-purpose buffer to contain sequences of samples. When representing a waveform, the samples are the scalar values of an acoustic signal. When representing a sequence of feature frames, the samples are vector-valued frames.",
+            "id": "SpeechWaveHeader",
+            "properties": {
+                "atomicSize": {
+                    "description": "Size of atomic type, in bytes.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "atomicType": {
+                    "description": "Numeric type of data elements (if generic)",
+                    "type": "string"
+                },
+                "bitRate": {
+                    "description": "For compressed signals with fixed bitrate, this is the number of bits per second.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "byteOrder": {
+                    "description": "Byte-order of the atomic_type When atomic_type == \"char\", byte_order should be always \"1\". When atomic_type == \"int16\", byte_order can be either \"01\" (Intel) or \"10\" (Motorola). Byte order should default to Intel when in question.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "Typically contains the parameter settings of the program that created the file.",
+                    "type": "string"
+                },
+                "dimension": {
+                    "description": "Array dimensions for a single sample. * For audio samples: * mono: rank==0, dimension==[1] * stereo: rank==0, dimension==[2] (samples are interleaved) * For typical ASR features representing energy, 12 MFCC coefficients, and first and second derivatives: * rank==1 and dimension==[39].",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "elementsPerSample": {
+                    "description": "The number of atomic elements stored per sample. This is the product of all the entries in the dimension array. Written \"out of order\" in this file to be close to the dimension field, from which it can always be computed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "rank": {
+                    "description": "The rank of each sample. For a waveform (signals that are sequences of scalar values), this is 0. For vector-valued signals (used as signals containing sequences of features, for example), this is 1. scalar=0, vector=1, matrix=2, ...",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sampleCoding": {
+                    "description": "Sample encoding. Can be \"ulaw\".",
+                    "type": "string"
+                },
+                "sampleRate": {
+                    "description": "For periodic signals, this is the number samples per second, else 0.0",
+                    "format": "float",
+                    "type": "number"
+                },
+                "sampleSize": {
+                    "description": "Size of a single sample, in bytes.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sampleType": {
+                    "description": "Structure of each sample. \"generic\" means that the samples are multi-dimensional arrays of atomic_type with the specified rank.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time origin for the signal, in seconds. Warning: Using float can result in rounding errors: float's smallest distance between two representable values (1 ULP; see https://en.wikipedia.org/wiki/Unit_in_the_last_place) between 1024 and 2048 (representing ~17-34 min) is 0.0001220703125, what is approximately double of what we need to represent 1 sample in a 16 kHz sample rate audio. The error is double in the 2048s-4096s, 4x in the 4096s-8192s range etc. Higher sample rate encounters rounding errors earlier: with 96 kHz, rounding errors start at ~2 min (128s).",
+                    "format": "float",
+                    "type": "number"
+                },
+                "totalSamples": {
+                    "description": "The number of samples in file. Can be inferred for generics from file size.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "StorageGraphBfgAuthorityFeedbackMetadata": {
             "description": "go/entity-authority NB: currently all facts associated with Authority Feedback are externally traceable to the requests from which they originate.",
             "id": "StorageGraphBfgAuthorityFeedbackMetadata",
@@ -107568,6 +110545,8 @@
                         "ISOLATION_S3_CREATOR_PRESENCE",
                         "ISOLATION_S12Y_RECIPE_INGREDIENT_INSIGHTS",
                         "ISOLATION_SCOUTS_SOCIETAL_CONTEXT_ENTITIES",
+                        "ISOLATION_ASTROLOGY_HOROSCOPE",
+                        "ISOLATION_LLM_GENERATED_TVM_SYNOPSIS",
                         "UMP_TESTING_ONLY",
                         "INTENTJOINS_NB_SIGNALS",
                         "ADS_INTEGRITY_ANNOTATION",
@@ -107620,7 +110599,7 @@
                         "This is an access restriction to avoid any usage of media data from a special LiveTV data provider Youview without knowing the context. YOU MUST CONTACT go/ump before reading or writing this data.",
                         "This is an access restriction to avoid any leakage of data for the testing and dogfooding of Youtube ALC data. YOU MUST CONTACT go/ump before reading or writing this data.",
                         "DEPRECATED! Not set anymore. Deprecated in favor of ISOLATION_S3_CREATOR_PRESENCE.",
-                        "Youtube Podcasts metadata. YOU MUST CONTACT who/kvk and g/ytm-podcasts-understanding before reading or writing this data.",
+                        "Youtube Podcasts metadata. YOU MUST CONTACT who/kvk, who/mbonanni and g/ytm-podcasts-understanding before reading or writing this data.",
                         "Access controls for data being injected by the Media Actions team without being reconciled against existing entities. This is an access restriction we use to insert triples into KG that improves Media Actions triggering on the Assistant, but that would otherwise cause quality issues on Search (due to the lack of proper reconciliation). While triples tagged with this access restriction will typically only be used on the Assistant, this access restriction should not be used for contractually sensitive data. In order to handle such data, see: go/ma-access-controls-prd See go/ma-launch-small-providers and go/ma-acl for context. YOU MUST CONTACT ke-media-actions@ before reading or writing this data.",
                         "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Audible's data is subject to simba/deal.do?cmd=view&id=417794. YOU MUST CONTACT kg-legal@ before reading or writing this data.",
                         "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Netflix for search data is subject to simba//#documents/list/dealId=500038. YOU MUST CONTACT knowledge-legal@ before reading or writing this data.",
@@ -107752,6 +110731,8 @@
                         "Access controls for Creator Channel's S-Cubed corpus data. See more in go/uro-access-required. YOU MUST CONTACT milk-tea@ before reading or writing this data",
                         "For Search sustainability's food choice feature, Recipe Ingredient Insights. Assign existing KG entities feature types to classify triggering behavior and insights. Owned by salehh@ and s12y-eng@ See go/rii-kg-triggering-migration for more information.",
                         "Access controls for SCOUTS Societal Context Repository entities. Please contact johnhenry-eng@ before reading or writing this data. DD: go/scouts-kg-integration-dd",
+                        "Access controls for Astrology Horoscope features. Please contact search-india-verticals@ before reading or writing this data. DD: go/daily-horoscope-dd",
+                        "Access controls for LLM generated tvm synopsis. DD: go/i18n-tvm-descriptions Please contact dkrish-team@ before reading or writing this data.",
                         "This access control is used to guard data used by the Unified Media Platform team (ke-media-actions-serving@) for testing new features. It should never be used for purposes other than testing. More context at go/fake-media-provider.",
                         "Access controls for the IntentJoins Navboost data. YOU MUST CONTACT intentjoins-eng@ before reading or writing this data.",
                         "Access controls for Ads Integrity annotation data. Ads Integrity annotations are only available for Ads Integrity policy enforcement. See go/ai-political-km for more details. YOU MUST CONTACT ai-pacg@ before reading or writing this data.",
@@ -108528,7 +111509,7 @@
             "type": "object"
         },
         "TravelFlightsAirlineConfig": {
-            "description": "Next ID: 27",
+            "description": "Next ID: 29",
             "id": "TravelFlightsAirlineConfig",
             "properties": {
                 "alliance": {
@@ -108610,6 +111591,9 @@
                     },
                     "type": "array"
                 },
+                "greenFaresInfo": {
+                    "$ref": "TravelFlightsAirlineConfigGreenFaresInfo"
+                },
                 "iataCode": {
                     "description": "Note that some iata_codes are reused (`dup_flag` field). For details, including how to resolve collisions for airlines shown in Google Flights, see: go/controlled-duplicate go/flights-data/airlines#resolving-iata-code-collisions cs/go/controlled-duplicate U2 - some have no IATA code",
                     "type": "string"
@@ -108649,6 +111633,10 @@
                     "$ref": "TravelFlightsNameCatalogProto",
                     "description": "KLM - instead of 'KLM Royal Dutch Airlines'"
                 },
+                "sustainabilityProgramUrls": {
+                    "$ref": "TravelFlightsNameCatalogProto",
+                    "description": "URLs for airlines' sustainability programs."
+                },
                 "type": {
                     "enum": [
                         "SCHEDULED_PASSENGER",
@@ -108727,6 +111715,58 @@
             },
             "type": "object"
         },
+        "TravelFlightsAirlineConfigGreenFaresInfo": {
+            "id": "TravelFlightsAirlineConfigGreenFaresInfo",
+            "properties": {
+                "bonusMilesProgramName": {
+                    "type": "string"
+                },
+                "bonusMilesQuantity": {
+                    "format": "int64",
+                    "type": "string"
+                },
+                "bonusMilesQuantityType": {
+                    "enum": [
+                        "BONUS_MILES_QUANTITY_TYPE_UNDEFINED",
+                        "ABSOLUTE",
+                        "PERCENTAGE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "bonusMilesType": {
+                    "enum": [
+                        "BONUS_MILES_TYPE_UNDEFINED",
+                        "MILES",
+                        "POINTS"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "contributionFraming": {
+                    "enum": [
+                        "CONTRIBUTION_FRAMING_UNDEFINED",
+                        "SAF",
+                        "CARBON_COMPENSATION"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "TravelFlightsAirlineConfigLocalizedContactInfo": {
             "description": "Airline contact info grouped by language. The language locale subcode will determine the country.",
             "id": "TravelFlightsAirlineConfigLocalizedContactInfo",
@@ -110397,7 +113437,7 @@
             "type": "object"
         },
         "TrawlerTrawlerPrivateFetchReplyData": {
-            "description": "This is an optional container of arbitrary data that can be added to a FetchReplyData. This data is meant to be logged, but not sent back in a fetch reply (it should be added *after* the reply is prepared). Use FetchResponsePreparatorImpl::AddTrawlerPrivateDataToFetchReplyData to add. See also the comment in fetch_response_preparator_impl.cc. Next Tag: 44",
+            "description": "This is an optional container of arbitrary data that can be added to a FetchReplyData. This data is meant to be logged, but not sent back in a fetch reply (it should be added *after* the reply is prepared). Use FetchResponsePreparatorImpl::AddTrawlerPrivateDataToFetchReplyData to add. See also the comment in fetch_response_preparator_impl.cc. Next Tag: 45",
             "id": "TrawlerTrawlerPrivateFetchReplyData",
             "properties": {
                 "BotGroupName": {
@@ -110612,6 +113652,9 @@
                     "description": "Whether this is a bidirectional streaming fetch.",
                     "type": "boolean"
                 },
+                "isDedicatedHostload": {
+                    "type": "boolean"
+                },
                 "isFloonetFetch": {
                     "description": "Whether or not this is a Floonet fetch request. Floonet requests have inherent lower availability (due to HOPE rejections when HOPE is in degraded mode, and other Floonet specific reasons). Therefore, it is important for debugging and for our availability SLO to know whether of not it is a floonet fetch. IMPORTANT NOTE: This field is only currently set for traffic that explicitly requires Floonet and can not failover to use Googlebot (i.e. \"transparent\" or \"implicit\" Floonet fetches).",
                     "type": "boolean"
@@ -110719,12 +113762,12 @@
                     ],
                     "enumDescriptions": [
                         "MAIN_GSR is the generic search response specified in AddKnowledgePackerPreprocessors. This will normally be universal::kResponseWeb but can also be universal::kResponseQuimbyTextWeb or potentially another response depending on the search mode.",
+                        "DEPRECATED",
                         "",
                         "",
                         "",
-                        "The following source is used by ContextBoostVoteAwareVoter to provide support for the selected interpretation. Note that this should not be used for any other purpose like navboost signals smearing.",
-                        "This is added for temporary legacy compatibility until all interpretations that use voting have migrated to KScorer. A KScorer-eligible interpretation may not receive any direct support from a particular result, but will require a ResultSupport rank in order to participate in legacy voting.",
-                        "The following source is used by the PersonalizationTwiddler"
+                        "",
+                        ""
                     ],
                     "type": "string"
                 },
@@ -111078,10 +114121,25 @@
                             "DSA_P13N_OPTED_IN_AT_EVENT_LEVEL",
                             "DSA_P13N_OPTED_OUT_AT_EVENT_LEVEL",
                             "USER_P13N_SETTING_UNSPECIFIED_AT_EVENT_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_UNSPECIFIED_AT_EVENT_LEVEL",
                             "USER_P13N_SETTING_ON_AT_EVENT_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_ON_AT_EVENT_LEVEL",
                             "USER_P13N_SETTING_OFF_AT_EVENT_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_OFF_AT_EVENT_LEVEL",
                             "BATTLESTAR_GAME_IN_MDP_EVENT_LEVEL",
+                            "BATTLESTAR_PSEUDO_CREDIT_OFFER_IN_DP_EVENT_LEVEL",
                             "REVIEW_HIGHLIGHTS_TRIGGERING_EVENT_LEVEL",
+                            "TRUSTED_VERTICAL_VPN_INTENT_EVENT_LEVEL",
+                            "TRUSTED_VERTICAL_LOAN_INTENT_EVENT_LEVEL",
+                            "SERP_YOUTUBE_VIDEO_CLUSTER_POPULATED_EVENT_LEVEL",
+                            "LOWQ_APPS_DEMOTION_EVENT_LEVEL",
+                            "QUERY_TYPE_MDP_EVENT_LEVEL",
+                            "QUERY_TYPE_NON_MDP_EVENT_LEVEL",
+                            "NAV_CARD_EVENT_LEVEL",
+                            "MDP_WITH_LIVE_OPS_EVER_INSTALLED_USERS_EVENT_LEVEL",
+                            "MDP_WITH_LIVE_OPS_NEVER_INSTALLED_USERS_EVENT_LEVEL",
+                            "BROAD_RELATED_QUERIES_CLUSTER_EVENT",
+                            "SUPPLEMENTAL_TG_RETRIEVAL_EVENT_LEVEL",
                             "EVENT_LEVEL_TEST_CODE_LIMIT",
                             "ENTERTAINMENT_CLUSTER_TRIGGERING_AT_SESSION_LEVEL",
                             "BEST_SELLER_CART_TAG_AT_SESSION_LEVEL",
@@ -111247,6 +114305,9 @@
                             "IN_APP_OFFER_APP_4_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_APP_GAMELOFT_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_APP_EVONY_AT_SESSION_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_APP_ASPHALT_9_AT_SESSION_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_APP_MAGIC_RAMPAGE_AT_SESSION_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_APP_SUMMONERS_WAR_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_ELIGIBLE_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_ELIGIBLE_APP_1_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_ELIGIBLE_APP_2_AT_SESSION_LEVEL",
@@ -111254,6 +114315,9 @@
                             "IN_APP_OFFER_ELIGIBLE_APP_4_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_GAMELOFT_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_EVONY_AT_SESSION_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_ASPHALT_9_AT_SESSION_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_MAGIC_RAMPAGE_AT_SESSION_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_SUMMONERS_WAR_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_SAVED_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_SAVED_APP_1_AT_SESSION_LEVEL",
                             "IN_APP_OFFER_SAVED_APP_2_AT_SESSION_LEVEL",
@@ -111542,6 +114606,50 @@
                             "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_NEW_RELEASE_GH",
                             "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_PRE_REGISTRATION_GH",
                             "SHOULD_SEE_TOP_NOW_CONTENT_MERCH_LIVE_OPS_GH",
+                            "SHOULD_NOT_SEE_NOW_CONTENT_NH",
+                            "SHOULD_SEE_NOW_CONTENT_NH_K1",
+                            "SHOULD_SEE_NOW_CONTENT_NH_K2",
+                            "SHOULD_SEE_NOW_CONTENT_NH_K3_4",
+                            "SHOULD_SEE_NOW_CONTENT_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_NH_K1",
+                            "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_NH_K2",
+                            "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_NH_K3_4",
+                            "SHOULD_SEE_NOW_CONTENT_NEW_RELEASE_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CONTENT_EDITORIAL_NH_K1",
+                            "SHOULD_SEE_NOW_CONTENT_EDITORIAL_NH_K2",
+                            "SHOULD_SEE_NOW_CONTENT_EDITORIAL_NH_K3_4",
+                            "SHOULD_SEE_NOW_CONTENT_EDITORIAL_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_NH_K1",
+                            "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_NH_K2",
+                            "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_NH_K3_4",
+                            "SHOULD_SEE_NOW_CONTENT_LIVE_OPS_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_NH_K1",
+                            "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_NH_K2",
+                            "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_NH_K3_4",
+                            "SHOULD_SEE_NOW_CONTENT_PRE_REGISTRATION_NH_GTE_K5",
+                            "SHOULD_NOT_SEE_NOW_CLUSTER_CONTENT_NH",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NH_K1",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NH_K2",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NH_K3_4",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NEW_RELEASE_NH_K1",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NEW_RELEASE_NH_K2",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NEW_RELEASE_NH_K3_4",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_NEW_RELEASE_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_EDITORIAL_NH_K1",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_EDITORIAL_NH_K2",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_EDITORIAL_NH_K3_4",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_EDITORIAL_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_LIVE_OPS_NH_K1",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_LIVE_OPS_NH_K2",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_LIVE_OPS_NH_K3_4",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_LIVE_OPS_NH_GTE_K5",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_PRE_REGISTRATION_NH_K1",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_PRE_REGISTRATION_NH_K2",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_PRE_REGISTRATION_NH_K3_4",
+                            "SHOULD_SEE_NOW_CLUSTER_CONTENT_PRE_REGISTRATION_NH_GTE_K5",
+                            "FEATURED_PRODUCTS_LIVE_OPS_AT_SESSION_LEVEL",
+                            "SUPPLEMENTAL_TG_RETRIEVAL_SESSION_LEVEL",
                             "WALLET_WELLBEING_ALERT_SESSION_LEVEL",
                             "BROAD_INTENT_REWEIGHTING_SESSION_LEVEL",
                             "DYNASTY_DEVICE_HANDOFF_SESSION_LEVEL",
@@ -111654,11 +114762,39 @@
                             "LANGUAGE_SWITCHER_SERVED_SESSION_LEVEL",
                             "HAS_INSUFFICIENT_STORED_VALUE_BALANCE_BEFORE_RENEWAL_SESSION_LEVEL",
                             "USER_P13N_SETTING_UNSPECIFIED_AT_SESSION_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_UNSPECIFIED_AT_SESSION_LEVEL",
                             "USER_P13N_SETTING_ON_AT_SESSION_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_ON_AT_SESSION_LEVEL",
                             "USER_P13N_SETTING_OFF_AT_SESSION_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_OFF_AT_SESSION_LEVEL",
                             "BATTLESTAR_GAME_IN_MDP_SESSION_LEVEL",
+                            "BATTLESTAR_PSEUDO_CREDIT_OFFER_IN_DP_SESSION_LEVEL",
                             "REVIEW_HIGHLIGHTS_SESSION_LEVEL",
                             "BOOKS_NOTIFICATION_RECEIVED_SESSION_LEVEL",
+                            "LANGUAGE_SWITCHER_ELIGIBLE_SESSION_LEVEL",
+                            "SUBS_OFFER_ON_BUYFLOW_AT_SESSION_LEVEL",
+                            "SUBS_OFFER_ON_BUYFLOW_ELIGIBLE_AT_SESSION_LEVEL",
+                            "TRUSTED_VERTICAL_VPN_INTENT_SESSION_LEVEL",
+                            "TRUSTED_VERTICAL_LOAN_INTENT_SESSION_LEVEL",
+                            "FOP_PARTNER_PROMOTION_SESSION_LEVEL",
+                            "SERP_YOUTUBE_VIDEO_CLUSTER_POPULATED_SESSION_LEVEL",
+                            "LOWQ_APPS_DEMOTION_SESSION_LEVEL",
+                            "PLANOGRAM_MERCH_TW_DYNASTY_EXTRA_FEATURING",
+                            "AMPLIFY_FORM_OF_PAYMENT_ELIGIBLE_SESSION_LEVEL",
+                            "QUERY_TYPE_MDP_SESSION_LEVEL",
+                            "QUERY_TYPE_NON_MDP_SESSION_LEVEL",
+                            "NAV_CARD_SESSION_LEVEL",
+                            "CART_WITH_BROKEN_FOP_SESSION_LEVEL",
+                            "IS_ELIGIBLE_FOR_DYNAMIC_AUTH_SESSION_LEVEL",
+                            "CLICKED_INSTALL_IN_DEEP_LINK_DETAILS",
+                            "ONE_TIME_PRODUCT_VARIANT_OFFER_DARK_LAUNCH_SESSION_LEVEL",
+                            "ONE_TIME_PRODUCT_VARIANT_OFFER_LAUNCH_SESSION_LEVEL",
+                            "AMPLIFY_FORM_OF_PAYMENT_ABANDONMENT_ELIGIBLE_SESSION_LEVEL",
+                            "SUBSCRIPTION_FREE_TRIAL_OFFER_HIGHLIGHT_SESSION_LEVEL",
+                            "SUBSCRIPTION_INTRO_PRICE_OFFER_HIGHLIGHT_SESSION_LEVEL",
+                            "SUBSCRIPTION_CANCELLATION_ELIGIBLE_FOR_RENEWAL_REMINDER",
+                            "SUBSCRIPTION_CANCELLATION_NOT_ELIGIBLE_FOR_RENEWAL_REMINDER",
+                            "USER_HAS_SET_RENEWAL_REMINDER",
                             "SESSION_LEVEL_TEST_CODE_LIMIT",
                             "CART_ABANDONMENT_USER_LEVEL",
                             "IN_APP_PRODUCTS_IN_DETAILS_PAGE_USER_LEVEL",
@@ -111723,6 +114859,9 @@
                             "IN_APP_OFFER_APP_4_AT_USER_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_APP_GAMELOFT_AT_USER_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_APP_EVONY_AT_USER_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_APP_ASPHALT_9_AT_USER_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_APP_MAGIC_RAMPAGE_AT_USER_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_APP_SUMMONERS_WAR_AT_USER_LEVEL",
                             "IN_APP_OFFER_ELIGIBLE_AT_USER_LEVEL",
                             "IN_APP_OFFER_ELIGIBLE_APP_1_AT_USER_LEVEL",
                             "IN_APP_OFFER_ELIGIBLE_APP_2_AT_USER_LEVEL",
@@ -111730,6 +114869,9 @@
                             "IN_APP_OFFER_ELIGIBLE_APP_4_AT_USER_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_GAMELOFT_AT_USER_LEVEL",
                             "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_EVONY_AT_USER_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_ASPHALT_9_AT_USER_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_MAGIC_RAMPAGE_AT_USER_LEVEL",
+                            "IN_APP_OFFER_BATTLESTAR_ELIGIBLE_APP_SUMMONERS_WAR_AT_USER_LEVEL",
                             "IN_APP_OFFER_SAVED_AT_USER_LEVEL",
                             "IN_APP_OFFER_SAVED_APP_1_AT_USER_LEVEL",
                             "IN_APP_OFFER_SAVED_APP_2_AT_USER_LEVEL",
@@ -111771,6 +114913,7 @@
                             "PLAY_PASS_PARENT_FOCUSED_SPLASH_PAGE_USER_LEVEL",
                             "PLAY_PASS_SPLASH_PAGE_FOR_UNICORN_USER_LEVEL",
                             "IN_CART_EXCHANGE_OPTIONS_ELIGIBLE_USER_LEVEL",
+                            "GE_STAMP_CARD_INDIVIDUALIZATION_COUNTERFACTUAL",
                             "GE_USER_BUYER_STATE_UNKNOWN",
                             "GE_USER_BUYER_STATE_NEVER",
                             "GE_USER_BUYER_STATE_NEW",
@@ -111796,6 +114939,7 @@
                             "GE_IS_SCHEDULED_QUEST",
                             "GE_IS_SCHEDULED_LOYALTY_MULTIPLIER",
                             "GE_IS_USER_OPT_IN_P13N",
+                            "GE_LOYALTY_PURCHASE_QUEST_INDIVIDUALIZATION_EXPERIMENT",
                             "IAP_SKU_DEALS_LIVE_OP_DEALS_HOME_USER_LEVEL",
                             "IAP_SKU_DEALS_LIVE_OP_GAMES_HOME_USER_LEVEL",
                             "FEATURING_AHC_OR_FHR_TRIGGERED_USER_LEVEL",
@@ -111812,7 +114956,9 @@
                             "LOYALTY_CORPUS_WIDE_STAMP_CARD_GAMES_HOME_CLIENT_USER_LEVEL",
                             "GROWTH_CORPUS_WIDE_STAMP_CARD_GAMES_HOME_SERVER_USER_LEVEL",
                             "LOYALTY_PURCHASE_QUEST_GAMES_HOME_SERVER_USER_LEVEL",
+                            "LOYALTY_PURCHASE_QUEST_SERP_SERVER_USER_LEVEL",
                             "LOYALTY_CORPUS_WIDE_STAMP_CARD_GAMES_HOME_SERVER_USER_LEVEL",
+                            "LOYALTY_CORPUS_WIDE_STAMP_CARD_DETAILS_PAGE_SERVER_USER_LEVEL",
                             "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_USER_LEVEL",
                             "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_USER_LEVEL_V2",
                             "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITH_EXISTING_FOP_USER_LEVEL",
@@ -111907,6 +115053,7 @@
                             "PURCHASE_READINESS_ADD_FOP_USER_LEVEL",
                             "PURCHASE_READINESS_ADD_AUTH_USER_LEVEL",
                             "PURCHASE_READINESS_ADD_FOP_AUTH_USER_LEVEL",
+                            "SUBS_PAYMENT_DECLINE_USER_LEVEL",
                             "MERCH_CONTENT_EXP_ACTIVE_PUBG_USER_LEVEL",
                             "MERCH_CONTENT_EXP_ACTIVE_GENSHIN_USER_LEVEL",
                             "MERCH_CONTENT_EXP_ACTIVE_ROBLOX_USER_LEVEL",
@@ -111918,11 +115065,22 @@
                             "DSA_P13N_OPTED_OUT_AT_USER_LEVEL",
                             "LIVEOPS_INSTALL_NOTIFICATION_USER_LEVEL",
                             "USER_P13N_SETTING_UNSPECIFIED_AT_USER_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_UNSPECIFIED_AT_USER_LEVEL",
                             "USER_P13N_SETTING_ON_AT_USER_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_ON_AT_USER_LEVEL",
                             "USER_P13N_SETTING_OFF_AT_USER_LEVEL",
+                            "BOOKS_USER_P13N_SETTING_OFF_AT_USER_LEVEL",
                             "LIVEOPS_CLUSTER_SERP_TRIGGERING_USER_LEVEL",
                             "BOOKS_NOTIFICATION_RECEIVED_USER_LEVEL",
                             "LIVEOPS_INSTALL_NOTIFICATION_CHURNED_USER_LEVEL",
+                            "SUBS_OFFER_ON_BUYFLOW_AT_USER_LEVEL",
+                            "SUBS_OFFER_ON_BUYFLOW_ELIGIBLE_AT_USER_LEVEL",
+                            "FOP_PARTNER_PROMOTION_USER_LEVEL",
+                            "BOOKS_LOYALTY_PROMO_BANNER_WEEKLY_PRIZE_USER_LEVEL",
+                            "IS_ELIGIBLE_FOR_DYNAMIC_AUTH_USER_LEVEL",
+                            "GE_LIVEOPS_PSPEND_USER_LEVEL",
+                            "IS_ELIGIBLE_FOR_RENEWAL_REMINDER_USER_LEVEL",
+                            "FEATURED_PRODUCTS_LIVE_OPS_AT_USER_LEVEL",
                             "USER_LEVEL_TEST_CODE_LIMIT"
                         ],
                         "enumDescriptions": [
@@ -112169,10 +115327,25 @@
                             "Event-level test code for DSA p13n opt in.",
                             "Event-level test code for DSA p13n opt out.",
                             "Event-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_UNSPECIFIED.",
+                            "",
                             "Event-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_ON.",
+                            "",
                             "Event-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_OFF.",
+                            "",
                             "Event-level test code corresponding to an MDP showing for a game also available on Battlestar.",
+                            "Event-level test code corresponding to the details page ribbon showing a pseudo credit offer promotion for Battlestar games.",
                             "Event-level test code to track triggering of review highlights.",
+                            "Event-level test code to track triggering of VPN Intent trusted vertical message.",
+                            "Event-level test code to track triggering of LOAN Intent trusted vertical message.",
+                            "Event-level test code to track triggering of SERP YouTube video cluster.",
+                            "Event-level test code to track triggering of lowQ apps demotion.",
+                            "Test code for MDP query event level.",
+                            "Test code for non-MDP query event level.",
+                            "Test code for nav card at event level.",
+                            "Event-level test code for logging MDP LiveOps shown to ever-installed users on SERP",
+                            "Event-level test code for logging MDP LiveOps shown to never-installed users on SERP",
+                            "Broad Related Queries TestCode",
+                            "Event-level test code for Supplemental TG Retrieval.",
                             "",
                             "",
                             "",
@@ -112352,6 +115525,12 @@
                             "",
                             "",
                             "",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "",
                             "see go/reordering-subnav-tabs",
                             "see go/reordering-subnav-tabs",
                             "",
@@ -112435,7 +115614,7 @@
                             "",
                             "",
                             "",
-                            "Test code for tracking eligble users who are shown the cart with marketing banner.",
+                            "Test code for tracking eligible users who are shown the cart with marketing banner.",
                             "Test code for tracking users shown Play Pass perks icon in cart.",
                             "Testcode for slicing MDP triggering queries in Play search.",
                             "Testcode for slicing non-MDP triggering queries in Play search.",
@@ -112633,6 +115812,50 @@
                             "Merch featuring Now! content on Top of Games Home.",
                             "",
                             "",
+                            "Session level test codes for Now! Home content coverage metrics. Any Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "New release Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Editorial Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Live Ops Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Pre-registration Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Session level test codes for Now! Cluster content coverage metrics on Now! Home Any Now! cluster content on Now! Home",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "New release Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Editorial Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Live Ops Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Pre-registration Now! content on NOW! Home.",
+                            "",
+                            "",
+                            "",
+                            "Session level test code for Featured Products LiveOps.",
+                            "Session-level test code for Supplemental TG Retrieval.",
                             "TestCode for slicing the users cohorts that should have received a budget Warning alert",
                             "TestCode for Broad Intent Reweighting Session Level.",
                             "TestCode for Dynasty Device Handoff Session Level.",
@@ -112745,11 +115968,39 @@
                             "Session level test code for Language Switcher indicating that the user was served with the module on cart screen.",
                             "Session level test code that indicates the stored value balance is insufficient for next renewal.",
                             "Session-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_UNSPECIFIED.",
+                            "",
                             "Session-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_ON.",
+                            "",
                             "Session-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_OFF.",
+                            "",
                             "Session-level test code corresponding to an MDP showing for a game also available on Battlestar.",
+                            "Session-level test code corresponding to the details page ribbon showing a pseudo credit offer promotion for Battlestar games.",
                             "Session-level test code for review highlights",
                             "Session level test code for users who receive a Books notification.",
+                            "Session level test code indicating that the user is eligible for language switcher on cart screen.",
+                            "Session level test code for traking the users who did see subs offer on buyflow. This is a Commerce client level test code.",
+                            "Session level test code for traking the users who are eligible to subs offer on buyflow. This is a P3 server level test code.",
+                            "Session-level test code to track triggering of VPN Intent trusted vertical message.",
+                            "Session-level test code to track triggering of LOAN Intent trusted vertical message.",
+                            "Session level test code for FOP Partner Promo.",
+                            "Session-level test code to track triggering of SERP YouTube video cluster.",
+                            "Session-level test code to track triggering of lowQ apps demotion.",
+                            "Session level test code for merch run planogram experiment for extra featuring of hit2 dynasty in TW.",
+                            "Session-level test code indicating that there is some Fop eligible for amplification. Amplification may or may not be visible to the user if some experiment flags are disabled.",
+                            "Test code for MDP query session level.",
+                            "Test code for non MDP query session level.",
+                            "Test code for nav card at session level.",
+                            "Session level test code indicating that user starts the purchase with a cart that has broken existing form of payment.",
+                            "Session level test code for users who are eligible for dynamic auth.",
+                            "Session level test code for users who click install in the details page for the post-install redirection experiment.",
+                            "",
+                            "",
+                            "Session level test code that indicates the user is eligible for an abandonment screen for a form of payment to be amplified.",
+                            "Session level test code for subscription with free trial offer highlight buyflow.",
+                            "Session level test code for subscription with intro price offer highlight buyflow.",
+                            "Session level test code for users who are eligible to get a renewal reminder.",
+                            "Session level test code for users who are not eligible to get a renewal reminder.",
+                            "Session level test code for users who chose to set a renewal reminder.",
                             "",
                             "Cart abandonment flow for purchase flow.",
                             "User saw/would have seen the in app products section in App",
@@ -112828,6 +116079,12 @@
                             "",
                             "",
                             "",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "",
+                            "",
                             "User saw/would have seen the subscription one time pass offer",
                             "",
                             "",
@@ -112857,11 +116114,12 @@
                             "",
                             "",
                             "",
-                            "Test code for tracking banner eligble users who are shown the cart.",
+                            "Test code for tracking banner eligible users who are shown the cart.",
                             "Test code for tracking users shown Play Pass perks icon in cart.",
                             "Test code for tracking users who see a Play Pass parent-focused splash page.",
                             "",
                             "",
+                            "",
                             "Test code GE ranker service unknown users.",
                             "Test code GE ranker service never users.",
                             "Test code GE ranker service new users.",
@@ -112887,6 +116145,7 @@
                             "",
                             "",
                             "Test codes for GE DSA opt-in users.",
+                            "Test code for the loyalty purchase quest I15n experiment",
                             "User level test code for tracking users who should see the IAP Sku Deals liveops card.",
                             "User level test code for tracking users who should see the IAP Sku Games Home liveops card.",
                             "User level test code for tracking users who should see the featuring AHC or FHR.",
@@ -112903,7 +116162,9 @@
                             "User level test code for Corpus Wide Loyalty Stamp Card, for tracking users who are eligible for the LSC in Games Home. This test code is logged on client side.",
                             "User level test code for Corpus Wide Growth Stamp Card, for tracking users who are eligible for the GSC in Games Home. This test code is logged on server side.",
                             "User level test code for Loyalty Purchase Quest, for tracking users who are eligible for the LPQ in Games Home. This test code is logged on server side.",
+                            "User level test code for Loyalty Purchase Quest, for tracking users who are eligible for the LPQ in SERP. This test code is logged on server side.",
                             "User level test code for Corpus Wide Loyalty Stamp Card, for tracking users who are eligible for the LSC in Games Home. This test code is logged on server side.",
+                            "User level test code for Corpus Wide Loyalty Stamp Card, for tracking users who are eligible for the LSC in Apps Details Page. This test code is logged on server side.",
                             "User level test code that indicates that at least one high churn fop options is available for user when visiting add fop page for subscription purchase. Deprecated, use 20361 instead.",
                             "",
                             "",
@@ -112998,6 +116259,7 @@
                             "User-level test code for user who is eligible for adding Form of Payment from Purchase Readiness Reminder.",
                             "User-level test code for user who is eligible for adding Auth Settings from Purchase Readiness Reminder.",
                             "User-level test code for user who is eligible for adding Form of Payment and then adding Auth Settings from Purchase Readiness Reminder.",
+                            "User level test code for Subscription Payment Decline Reminder.",
                             "User-level test code for running content experiments for merch curated clusters.",
                             "",
                             "",
@@ -113009,11 +116271,22 @@
                             "User-level test code for DSA p13n opt out.",
                             "User level test code for live-ops install notification experiments. If GE decision changed after enabling ranking using the notification install model prediction, log test code.",
                             "User-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_UNSPECIFIED.",
+                            "",
                             "User-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_ON.",
+                            "",
                             "User-level test code corresponding to com.google.play.consent.proto.Setting.SETTING_OFF.",
+                            "",
                             "User level test code for cat search live ops cluster triggering.",
                             "User level test code for users who have received a Books notification.",
                             "User level test code for live-ops install notification Churn experiments. If GE decision changed after enabling ranking using the notification install model prediction for churned users, log test code.",
+                            "User level test code for traking the users who did see subs offer on buyflow. This is a Commerce client level test code.",
+                            "User level test code for traking the users who are eligible to subs offer on buyflow. This is a P3 server level test code.",
+                            "User level test code for FOP Partner Promo.",
+                            "User level test code for users who have seen a Loyalty weekly prize banner.",
+                            "User level test code for users who are eligible for dynamic auth.",
+                            "User level test code for LiveOps pSpend uplift experiment. If GE campaign decision changed after enabling pSpend model, log test code.",
+                            "User level test code for users who are eligible to see the renewal reminder button.",
+                            "User level test code for Featured Products LiveOps.",
                             ""
                         ],
                         "type": "string"
@@ -113436,7 +116709,8 @@
                         "NS_CONTRIB_SERVICE_GEO_UGC",
                         "NS_SEARCH_SPORTS",
                         "NS_BUSINESSMESSAGING",
-                        "NS_AERIAL_VIEW"
+                        "NS_AERIAL_VIEW",
+                        "NS_DOCS_FLIX_RENDER"
                     ],
                     "enumDescriptions": [
                         "Default (invalid) namespace if the field is not set.",
@@ -113479,7 +116753,8 @@
                         "Namespace for GEO UGC videos processed by ContribService.",
                         "Namespace for Search Sports vertical videos.",
                         "Namespace for Business Messaging videos.",
-                        "Namespace for Geo Aerial View Please receive approval via go/vp-newclients before adding a new namespace."
+                        "Namespace for Geo Aerial View",
+                        "Namespace for Flix Render (Docs) Please receive approval via go/vp-newclients before adding a new namespace."
                     ],
                     "type": "string"
                 }
@@ -114645,6 +117920,10 @@
                         "ADSBURST_DISCOVERY_UNCOMFORTABLE_V1",
                         "ADSBURST_DISCOVERY_NERV_SUBS_V1",
                         "ADSBURST_BASIC_TEXT_TOWER_V0",
+                        "ADSBURST_V2",
+                        "ADSBURST_V2_128D",
+                        "ADSBURST_V2_64D",
+                        "ADSBURST_V2_32D",
                         "SHOPPING_IMAGE_TRANSFORMATION_UNCROP",
                         "SHOPPING_IMAGE_TRANSFORMATION_V2",
                         "SCREENAI_V1",
@@ -114750,6 +118029,10 @@
                         "",
                         "",
                         "",
+                        "",
+                        "",
+                        "",
+                        "",
                         "Shopping image transformation versions.",
                         "",
                         "ScreenAI versions. IconNet.",
@@ -128067,7 +131350,7 @@
             "type": "object"
         },
         "WWWResultInfoSubImageDocInfo": {
-            "description": "The following message contains info of sub image docs, it is populated in query_state and consumed in web image boost twiddler: (go/WebImageBoostTwiddler). NextID: 25",
+            "description": "The following message contains info of sub image docs, it is populated in query_state and consumed in web image boost twiddler: (go/WebImageBoostTwiddler). NextID: 26",
             "id": "WWWResultInfoSubImageDocInfo",
             "properties": {
                 "additionalSafesearchSignals": {
@@ -128205,6 +131488,11 @@
                     "format": "float",
                     "type": "number"
                 },
+                "estSigmaU": {
+                    "description": "Estimated Sigma U calculated from U*.",
+                    "format": "float",
+                    "type": "number"
+                },
                 "flowOutput": {
                     "$ref": "ImageContentFlowProtoProd"
                 },
@@ -129010,28 +132298,32 @@
             "type": "object"
         },
         "YoutubeBackstageSuperVodCommentInfo": {
-            "description": "Contains information about comment that is posted through a Super VOD purchase. Next ID: 6",
+            "description": "Contains information about comment that is posted through a Super Thanks purchase. Next ID: 7",
             "id": "YoutubeBackstageSuperVodCommentInfo",
             "properties": {
                 "currencyCode": {
-                    "description": "Currency code the user uses to purchase this Super VOD item.",
+                    "description": "Currency code the user uses to purchase this Super Thanks item.",
                     "type": "string"
                 },
                 "entitlementId": {
-                    "description": "The ID of the Super VOD entitlement. It uniquely identifies a Super VOD purchase.",
+                    "description": "The ID of the Super Thanks entitlement. It uniquely identifies a Super Thanks purchase. This field is deprecated in favor of transaction_id, see go/st-deprecate-ent-id.",
                     "type": "string"
                 },
                 "priceInMicros": {
-                    "description": "Price of Super VOD item the user purchases in micros.",
+                    "description": "Price of Super Thanks item the user purchases in micros.",
                     "format": "uint64",
                     "type": "string"
                 },
                 "superVodItemId": {
-                    "description": "The Super VOD item the user purchases, it represents price tier.",
+                    "description": "The Super Thanks item the user purchases, it represents price tier.",
+                    "type": "string"
+                },
+                "transactionId": {
+                    "description": "The ID of the Super Thanks transaction. It uniquely identifies a Super Thanks purchase.",
                     "type": "string"
                 },
                 "version": {
-                    "description": "Which version of experiment this Super VOD comment is posted in.",
+                    "description": "Which version of experiment this Super Thanks comment is posted in.",
                     "enum": [
                         "UNSPECIFIED_VERSION",
                         "V1_DEFAULT_MESSAGE",
@@ -129040,9 +132332,9 @@
                     ],
                     "enumDescriptions": [
                         "",
-                        "DEPRECATED since decorated comments are fully launched. Comments previously posted with this enum value will continue to exist. Undecorated Comment. When user buys a Super VOD, a comment with default message will be automatically posted on behalf of the user.",
-                        "Decorated Comment. When user buys a Super VOD, a comment with default message and a special decoration will be automatically posted on behalf of the user. https://screenshot.googleplex.com/6aYvGnX5Bp9bT9Q",
-                        "UGC. When user buys a Super VOD, they can write their own UGC comment which will be decorated and automatically posted on behalf of the user."
+                        "DEPRECATED since decorated comments are fully launched. Comments previously posted with this enum value will continue to exist. Undecorated Comment. When user buys a Super Thanks, a comment with default message will be automatically posted on behalf of the user.",
+                        "Decorated Comment. When user buys a Super Thanks, a comment with default message and a special decoration will be automatically posted on behalf of the user. https://screenshot.googleplex.com/6aYvGnX5Bp9bT9Q",
+                        "UGC. When user buys a Super Thanks, they can write their own UGC comment which will be decorated and automatically posted on behalf of the user."
                     ],
                     "type": "string"
                 }
@@ -130150,9 +133442,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Document AI Warehouse API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/customsearch__v1.json b/discovery/googleapis/customsearch__v1.json
index 37d750c..c862b51 100644
--- a/discovery/googleapis/customsearch__v1.json
+++ b/discovery/googleapis/customsearch__v1.json
@@ -15,6 +15,13 @@
     "name": "customsearch",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230711",
+    "rootUrl": "https://customsearch.googleapis.com/",
+    "servicePath": "",
+    "title": "Custom Search API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -92,7 +99,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "cse": {
             "methods": {
@@ -673,8 +679,6 @@
             }
         }
     },
-    "revision": "20230510",
-    "rootUrl": "https://customsearch.googleapis.com/",
     "schemas": {
         "Promotion": {
             "description": "Promotion result.",
@@ -1433,9 +1437,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Custom Search API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/datacatalog__v1.json b/discovery/googleapis/datacatalog__v1.json
index e921291..ff109d8 100644
--- a/discovery/googleapis/datacatalog__v1.json
+++ b/discovery/googleapis/datacatalog__v1.json
@@ -24,6 +24,13 @@
     "name": "datacatalog",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230630",
+    "rootUrl": "https://datacatalog.googleapis.com/",
+    "servicePath": "",
+    "title": "Google Cloud Data Catalog API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "catalog": {
             "methods": {
@@ -144,6 +150,16 @@
                             "location": "query",
                             "type": "string"
                         },
+                        "location": {
+                            "description": "Location where the lookup should be performed. Required to lookup entry that is not a part of `DPMS` or `DATAPLEX` `integrated_system` using its `fully_qualified_name`. Ignored in other cases.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project where the lookup should be performed. Required to lookup entry that is not a part of `DPMS` or `DATAPLEX` `integrated_system` using its `fully_qualified_name`. Ignored in other cases.",
+                            "location": "query",
+                            "type": "string"
+                        },
                         "sqlResource": {
                             "description": "The SQL name of the entry. SQL names are case-sensitive. Examples: * `pubsub.topic.{PROJECT_ID}.{TOPIC_ID}` * `pubsub.topic.{PROJECT_ID}.`\\``{TOPIC.ID.SEPARATED.WITH.DOTS}`\\` * `bigquery.table.{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}` * `bigquery.dataset.{PROJECT_ID}.{DATASET_ID}` * `datacatalog.entry.{PROJECT_ID}.{LOCATION_ID}.{ENTRY_GROUP_ID}.{ENTRY_ID}` Identifiers (`*_ID`) should comply with the [Lexical structure in Standard SQL] (https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical).",
                             "location": "query",
@@ -2132,8 +2148,6 @@
             }
         }
     },
-    "revision": "20230505",
-    "rootUrl": "https://datacatalog.googleapis.com/",
     "schemas": {
         "Binding": {
             "description": "Associates `members`, or principals, with a `role`.",
@@ -2890,7 +2904,7 @@
                     "description": "Specification that applies to a relational database system. Only settable when `user_specified_system` is equal to `SQL_DATABASE`"
                 },
                 "type": {
-                    "description": "The type of the entry. Only used for entries with types listed in the `EntryType` enum. Currently, only `FILESET` enum value is allowed. All other entries created in Data Catalog must use the `user_specified_type`.",
+                    "description": "The type of the entry. For details, see [`EntryType`](#entrytype).",
                     "enum": [
                         "ENTRY_TYPE_UNSPECIFIED",
                         "TABLE",
@@ -2912,13 +2926,13 @@
                     "enumDescriptions": [
                         "Default unknown type.",
                         "The entry type that has a GoogleSQL schema, including logical views.",
-                        "Output only. The type of models. For more information, see [Supported models in BigQuery ML] (https://cloud.google.com/bigquery-ml/docs/introduction#supported_models_in).",
+                        "The type of models. For more information, see [Supported models in BigQuery ML](/bigquery/docs/bqml-introduction#supported_models).",
                         "An entry type for streaming entries. For example, a Pub/Sub topic.",
                         "An entry type for a set of files or objects. For example, a Cloud Storage fileset.",
                         "A group of servers that work together. For example, a Kafka cluster.",
                         "A database.",
-                        "Output only. Connection to a data source. For example, a BigQuery connection.",
-                        "Output only. Routine, for example, a BigQuery routine.",
+                        "Connection to a data source. For example, a BigQuery connection.",
+                        "Routine, for example, a BigQuery routine.",
                         "A Dataplex lake.",
                         "A Dataplex zone.",
                         "A service, for example, a Dataproc Metastore service.",
@@ -3140,6 +3154,10 @@
                 "gcsBucketPath": {
                     "description": "Path to a Cloud Storage bucket that contains a dump ready for ingestion.",
                     "type": "string"
+                },
+                "jobId": {
+                    "description": "Optional. (Optional) Dataplex task job id, if specified will be used as part of ImportEntries LRO ID",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3678,11 +3696,11 @@
             "id": "GoogleCloudDatacatalogV1SearchCatalogRequest",
             "properties": {
                 "orderBy": {
-                    "description": "Specifies the order of results. Currently supported case-sensitive values are: * `relevance` that can only be descending * `last_modified_timestamp [asc|desc]` with descending (`desc`) as default * `default` that can only be descending If this parameter is omitted, it defaults to the descending `relevance`.",
+                    "description": "Specifies the order of results. Currently supported case-sensitive values are: * `relevance` that can only be descending * `last_modified_timestamp [asc|desc]` with descending (`desc`) as default * `default` that can only be descending Search queries don't guarantee full recall. Results that match your query might not be returned, even in subsequent result pages. Additionally, returned (and not returned) results can vary if you repeat search queries. If you are experiencing recall issues and you don't have to fetch the results in any specific order, consider setting this parameter to `default`. If this parameter is omitted, it defaults to the descending `relevance`.",
                     "type": "string"
                 },
                 "pageSize": {
-                    "description": "Number of results to return in a single search page. Can't be negative or 0, defaults to 10 in this case. The maximum number is 1000. If exceeded, throws an \"invalid argument\" exception.",
+                    "description": "Upper bound on the number of results you can get in a single response. Can't be negative or 0, defaults to 10 in this case. The maximum number is 1000. If exceeded, throws an \"invalid argument\" exception.",
                     "format": "int32",
                     "type": "integer"
                 },
@@ -4484,9 +4502,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Google Cloud Data Catalog API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/datafusion__v1.json b/discovery/googleapis/datafusion__v1.json
index 231e160..125ebce 100644
--- a/discovery/googleapis/datafusion__v1.json
+++ b/discovery/googleapis/datafusion__v1.json
@@ -24,6 +24,13 @@
     "name": "datafusion",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230627",
+    "rootUrl": "https://datafusion.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Data Fusion API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -735,8 +741,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://datafusion.googleapis.com/",
     "schemas": {
         "Accelerator": {
             "description": "Identifies Data Fusion accelerators for an instance.",
@@ -1515,9 +1519,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Data Fusion API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/datalineage__v1.json b/discovery/googleapis/datalineage__v1.json
index 035e47e..855c777 100644
--- a/discovery/googleapis/datalineage__v1.json
+++ b/discovery/googleapis/datalineage__v1.json
@@ -24,6 +24,13 @@
     "name": "datalineage",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230623",
+    "rootUrl": "https://datalineage.googleapis.com/",
+    "servicePath": "",
+    "title": "Data Lineage API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -759,8 +765,6 @@
             }
         }
     },
-    "revision": "20230407",
-    "rootUrl": "https://datalineage.googleapis.com/",
     "schemas": {
         "GoogleCloudDatacatalogLineageV1BatchSearchLinkProcessesRequest": {
             "description": "Request message for BatchSearchLinkProcesses.",
@@ -808,7 +812,7 @@
             "id": "GoogleCloudDatacatalogLineageV1EntityReference",
             "properties": {
                 "fullyQualifiedName": {
-                    "description": "Required. [Fully Qualified Name (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names) of the entity.",
+                    "description": "Required. [Fully Qualified Name (FQN)](https://cloud.google.com/data-catalog/docs/fully-qualified-names) of the entity.",
                     "type": "string"
                 }
             },
@@ -850,7 +854,7 @@
                     "type": "string"
                 },
                 "startTime": {
-                    "description": "Optional. The beginning of the transformation which resulted in this lineage event. For streaming scenarios, it should be the beginning of the period from which the lineage is being reported.",
+                    "description": "Required. The beginning of the transformation which resulted in this lineage event. For streaming scenarios, it should be the beginning of the period from which the lineage is being reported.",
                     "format": "google-datetime",
                     "type": "string"
                 }
@@ -961,11 +965,13 @@
                     "description": "Output only. The type of the operation being performed.",
                     "enum": [
                         "TYPE_UNSPECIFIED",
-                        "DELETE"
+                        "DELETE",
+                        "CREATE"
                     ],
                     "enumDescriptions": [
                         "Unused.",
-                        "The resource deletion operation."
+                        "The resource deletion operation.",
+                        "The resource creation operation."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -1284,9 +1290,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Data Lineage API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/datamigration__v1.json b/discovery/googleapis/datamigration__v1.json
index e227729..6fbd21c 100644
--- a/discovery/googleapis/datamigration__v1.json
+++ b/discovery/googleapis/datamigration__v1.json
@@ -24,6 +24,13 @@
     "name": "datamigration",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230703",
+    "rootUrl": "https://datamigration.googleapis.com/",
+    "servicePath": "",
+    "title": "Database Migration API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -638,6 +644,11 @@
                                         "name"
                                     ],
                                     "parameters": {
+                                        "force": {
+                                            "description": "Force delete the conversion workspace, even if there's a running migration that is using the workspace.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        },
                                         "name": {
                                             "description": "Required. Name of the conversion workspace resource to delete.",
                                             "location": "path",
@@ -699,7 +710,7 @@
                                     ],
                                     "parameters": {
                                         "commitId": {
-                                            "description": "Request a specific commit ID. If not specified, the entities from the latest commit are returned.",
+                                            "description": "Optional. Request a specific commit ID. If not specified, the entities from the latest commit are returned.",
                                             "location": "query",
                                             "type": "string"
                                         },
@@ -711,23 +722,23 @@
                                             "type": "string"
                                         },
                                         "filter": {
-                                            "description": "Filter the returned entities based on AIP-160 standard.",
+                                            "description": "Optional. Filter the returned entities based on AIP-160 standard.",
                                             "location": "query",
                                             "type": "string"
                                         },
                                         "pageSize": {
-                                            "description": "The maximum number of entities to return. The service may return fewer entities than the value specifies.",
+                                            "description": "Optional. The maximum number of entities to return. The service may return fewer entities than the value specifies.",
                                             "format": "int32",
                                             "location": "query",
                                             "type": "integer"
                                         },
                                         "pageToken": {
-                                            "description": "The nextPageToken value received in the previous call to conversionWorkspace.describeDatabaseEntities, used in the subsequent request to retrieve the next page of results. On first call this should be left blank. When paginating, all other parameters provided to conversionWorkspace.describeDatabaseEntities must match the call that provided the page token.",
+                                            "description": "Optional. The nextPageToken value received in the previous call to conversionWorkspace.describeDatabaseEntities, used in the subsequent request to retrieve the next page of results. On first call this should be left blank. When paginating, all other parameters provided to conversionWorkspace.describeDatabaseEntities must match the call that provided the page token.",
                                             "location": "query",
                                             "type": "string"
                                         },
                                         "tree": {
-                                            "description": "The tree to fetch.",
+                                            "description": "Required. The tree to fetch.",
                                             "enum": [
                                                 "DB_TREE_TYPE_UNSPECIFIED",
                                                 "SOURCE_TREE",
@@ -744,9 +755,26 @@
                                             "type": "string"
                                         },
                                         "uncommitted": {
-                                            "description": "Whether to retrieve the latest committed version of the entities or the latest version. This field is ignored if a specific commit_id is specified.",
+                                            "description": "Optional. Whether to retrieve the latest committed version of the entities or the latest version. This field is ignored if a specific commit_id is specified.",
                                             "location": "query",
                                             "type": "boolean"
+                                        },
+                                        "view": {
+                                            "description": "Optional. Results view based on AIP-157",
+                                            "enum": [
+                                                "DATABASE_ENTITY_VIEW_UNSPECIFIED",
+                                                "DATABASE_ENTITY_VIEW_BASIC",
+                                                "DATABASE_ENTITY_VIEW_FULL",
+                                                "DATABASE_ENTITY_VIEW_ROOT_SUMMARY"
+                                            ],
+                                            "enumDescriptions": [
+                                                "Unspecified view. Defaults to basic view.",
+                                                "Default view. Does not return DDLs or Issues.",
+                                                "Return full entity details including mappings, ddl and issues.",
+                                                "Top-most (Database, Schema) nodes which are returned contains summary details for their decendents such as the number of entities per type and issues rollups. When this view is used, only a single page of result is returned and the page_size property of the request is ignored. The returned page will only include the top-most node types."
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/{+conversionWorkspace}:describeDatabaseEntities",
@@ -1051,6 +1079,99 @@
                             "resources": {
                                 "mappingRules": {
                                     "methods": {
+                                        "create": {
+                                            "description": "Creates a new mapping rule for a given conversion workspace.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/conversionWorkspaces/{conversionWorkspacesId}/mappingRules",
+                                            "httpMethod": "POST",
+                                            "id": "datamigration.projects.locations.conversionWorkspaces.mappingRules.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "mappingRuleId": {
+                                                    "description": "Required. The ID of the rule to create.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The parent which owns this collection of mapping rules.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/conversionWorkspaces/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "requestId": {
+                                                    "description": "A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/mappingRules",
+                                            "request": {
+                                                "$ref": "MappingRule"
+                                            },
+                                            "response": {
+                                                "$ref": "MappingRule"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a single mapping rule.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/conversionWorkspaces/{conversionWorkspacesId}/mappingRules/{mappingRulesId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "datamigration.projects.locations.conversionWorkspaces.mappingRules.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Name of the mapping rule resource to delete.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/conversionWorkspaces/[^/]+/mappingRules/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "requestId": {
+                                                    "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Gets the details of a mapping rule.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/conversionWorkspaces/{conversionWorkspacesId}/mappingRules/{mappingRulesId}",
+                                            "httpMethod": "GET",
+                                            "id": "datamigration.projects.locations.conversionWorkspaces.mappingRules.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Name of the mapping rule resource to get. Example: conversionWorkspaces/123/mappingRules/rule123 In order to retrieve a previous revision of the mapping rule, also provide the revision ID. Example: conversionWorkspace/123/mappingRules/rule123@c7cfa2a8c7cfa2a8c7cfa2a8c7cfa2a8",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/conversionWorkspaces/[^/]+/mappingRules/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "MappingRule"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
                                         "import": {
                                             "description": "Imports the mapping rules for a given conversion workspace. Supports various formats of external rules files.",
                                             "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/conversionWorkspaces/{conversionWorkspacesId}/mappingRules:import",
@@ -1078,6 +1199,42 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
+                                        },
+                                        "list": {
+                                            "description": "Lists the mapping rules for a specific conversion workspace.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/conversionWorkspaces/{conversionWorkspacesId}/mappingRules",
+                                            "httpMethod": "GET",
+                                            "id": "datamigration.projects.locations.conversionWorkspaces.mappingRules.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "pageSize": {
+                                                    "description": "The maximum number of rules to return. The service may return fewer than this value.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "The nextPageToken value received in the previous call to mappingRules.list, used in the subsequent request to retrieve the next page of results. On first call this should be left blank. When paginating, all other parameters provided to mappingRules.list must match the call that provided the page token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. Name of the conversion workspace resource whose mapping rules are listed in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{conversion_workspace}.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/conversionWorkspaces/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/mappingRules",
+                                            "response": {
+                                                "$ref": "ListMappingRulesResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
                                         }
                                     }
                                 }
@@ -1107,7 +1264,7 @@
                                             "type": "string"
                                         },
                                         "requestId": {
-                                            "description": "A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+                                            "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
                                             "location": "query",
                                             "type": "string"
                                         }
@@ -1186,6 +1343,34 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "generateTcpProxyScript": {
+                                    "description": "Generate a TCP Proxy configuration script to configure a cloud-hosted VM running a TCP Proxy.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/migrationJobs/{migrationJobsId}:generateTcpProxyScript",
+                                    "httpMethod": "POST",
+                                    "id": "datamigration.projects.locations.migrationJobs.generateTcpProxyScript",
+                                    "parameterOrder": [
+                                        "migrationJob"
+                                    ],
+                                    "parameters": {
+                                        "migrationJob": {
+                                            "description": "Name of the migration job resource to generate the TCP Proxy script.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/migrationJobs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+migrationJob}:generateTcpProxyScript",
+                                    "request": {
+                                        "$ref": "GenerateTcpProxyScriptRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "TcpProxyScript"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "get": {
                                     "description": "Gets details of a single migration job.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/migrationJobs/{migrationJobsId}",
@@ -1916,8 +2101,6 @@
             }
         }
     },
-    "revision": "20230503",
-    "rootUrl": "https://datamigration.googleapis.com/",
     "schemas": {
         "AlloyDbConnectionProfile": {
             "description": "Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster.",
@@ -1967,10 +2150,18 @@
             "description": "Request message for 'ApplyConversionWorkspace' request.",
             "id": "ApplyConversionWorkspaceRequest",
             "properties": {
+                "autoCommit": {
+                    "description": "Optional. Specifies whether the conversion workspace is to be committed automatically after the apply.",
+                    "type": "boolean"
+                },
                 "connectionProfile": {
-                    "description": "Fully qualified (Uri) name of the destination connection profile.",
+                    "description": "Optional. Fully qualified (Uri) name of the destination connection profile.",
                     "type": "string"
                 },
+                "dryRun": {
+                    "description": "Optional. Only validates the apply process, but doesn't change the destination database. Only works for PostgreSQL destination connection profile.",
+                    "type": "boolean"
+                },
                 "filter": {
                     "description": "Filter which entities to apply. Leaving this field empty will apply all of the entities. Supports Google AIP 160 based filtering.",
                     "type": "string"
@@ -1978,16 +2169,40 @@
             },
             "type": "object"
         },
+        "ApplyHash": {
+            "description": "Apply a hash function on the value.",
+            "id": "ApplyHash",
+            "properties": {
+                "uuidFromBytes": {
+                    "$ref": "Empty",
+                    "description": "Optional. Generate UUID from the data's byte array"
+                }
+            },
+            "type": "object"
+        },
         "ApplyJobDetails": {
             "description": "Details regarding an Apply background job.",
             "id": "ApplyJobDetails",
             "properties": {
                 "connectionProfile": {
-                    "description": "The connection profile which was used for the apply job.",
+                    "description": "Output only. The connection profile which was used for the apply job.",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "filter": {
-                    "description": "AIP-160 based filter used to specify the entities to apply",
+                    "description": "Output only. AIP-160 based filter used to specify the entities to apply",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AssignSpecificValue": {
+            "description": "Set to a specific value (value is converted to fit the target data type)",
+            "id": "AssignSpecificValue",
+            "properties": {
+                "value": {
+                    "description": "Required. Specific value to be assigned",
                     "type": "string"
                 }
             },
@@ -2047,14 +2262,16 @@
             "properties": {
                 "applyJobDetails": {
                     "$ref": "ApplyJobDetails",
-                    "description": "Apply job details."
+                    "description": "Output only. Apply job details.",
+                    "readOnly": true
                 },
                 "completionComment": {
-                    "description": "Job completion comment, such as how many entities were seeded, how many warnings were found during conversion, and similar information.",
+                    "description": "Output only. Job completion comment, such as how many entities were seeded, how many warnings were found during conversion, and similar information.",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "completionState": {
-                    "description": "Job completion state, i.e. the final state after the job completed.",
+                    "description": "Output only. Job completion state, i.e. the final state after the job completed.",
                     "enum": [
                         "JOB_COMPLETION_STATE_UNSPECIFIED",
                         "SUCCEEDED",
@@ -2065,11 +2282,13 @@
                         "Success.",
                         "Error."
                     ],
+                    "readOnly": true,
                     "type": "string"
                 },
                 "convertJobDetails": {
                     "$ref": "ConvertJobDetails",
-                    "description": "Convert job details."
+                    "description": "Output only. Convert job details.",
+                    "readOnly": true
                 },
                 "finishTime": {
                     "description": "The timestamp when the background job was finished.",
@@ -2082,7 +2301,8 @@
                 },
                 "importRulesJobDetails": {
                     "$ref": "ImportRulesJobDetails",
-                    "description": "Import rules job details."
+                    "description": "Output only. Import rules job details.",
+                    "readOnly": true
                 },
                 "jobType": {
                     "description": "The type of job that was executed.",
@@ -2103,12 +2323,14 @@
                     "type": "string"
                 },
                 "requestAutocommit": {
-                    "description": "Whether the client requested the conversion workspace to be committed after a successful completion of the job.",
+                    "description": "Output only. Whether the client requested the conversion workspace to be committed after a successful completion of the job.",
+                    "readOnly": true,
                     "type": "boolean"
                 },
                 "seedJobDetails": {
                     "$ref": "SeedJobDetails",
-                    "description": "Seed job details."
+                    "description": "Output only. Seed job details.",
+                    "readOnly": true
                 },
                 "startTime": {
                     "description": "The timestamp when the background job was started.",
@@ -2259,7 +2481,8 @@
                         "MYSQL_8_0",
                         "POSTGRES_12",
                         "POSTGRES_13",
-                        "POSTGRES_14"
+                        "POSTGRES_14",
+                        "POSTGRES_15"
                     ],
                     "enumDescriptions": [
                         "Unspecified version.",
@@ -2271,7 +2494,22 @@
                         "MySQL 8.0.",
                         "PostgreSQL 12.",
                         "PostgreSQL 13.",
-                        "PostgreSQL 14."
+                        "PostgreSQL 14.",
+                        "PostgreSQL 15."
+                    ],
+                    "type": "string"
+                },
+                "edition": {
+                    "description": "Optional. The edition of the given Cloud SQL instance.",
+                    "enum": [
+                        "EDITION_UNSPECIFIED",
+                        "ENTERPRISE",
+                        "ENTERPRISE_PLUS"
+                    ],
+                    "enumDescriptions": [
+                        "The instance did not specify the edition.",
+                        "The instance is an enterprise edition.",
+                        "The instance is an enterprise plus edition."
                     ],
                     "type": "string"
                 },
@@ -2422,6 +2660,33 @@
             },
             "type": "object"
         },
+        "ConditionalColumnSetValue": {
+            "description": "Options to configure rule type ConditionalColumnSetValue. The rule is used to transform the data which is being replicated/migrated. The rule filter field can refer to one or more entities. The rule scope can be one of: Column.",
+            "id": "ConditionalColumnSetValue",
+            "properties": {
+                "customFeatures": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Optional. Custom engine specific features.",
+                    "type": "object"
+                },
+                "sourceNumericFilter": {
+                    "$ref": "SourceNumericFilter",
+                    "description": "Optional. Optional filter on source column precision and scale. Used for fixed point numbers such as NUMERIC/NUMBER data types."
+                },
+                "sourceTextFilter": {
+                    "$ref": "SourceTextFilter",
+                    "description": "Optional. Optional filter on source column length. Used for text based data types like varchar."
+                },
+                "valueTransformation": {
+                    "$ref": "ValueTransformation",
+                    "description": "Required. Description of data transformation during migration."
+                }
+            },
+            "type": "object"
+        },
         "ConnectionProfile": {
             "description": "A connection profile definition.",
             "id": "ConnectionProfile",
@@ -2583,14 +2848,14 @@
                     "description": "Required. The destination engine details."
                 },
                 "displayName": {
-                    "description": "The display name for the workspace.",
+                    "description": "Optional. The display name for the workspace.",
                     "type": "string"
                 },
                 "globalSettings": {
                     "additionalProperties": {
                         "type": "string"
                     },
-                    "description": "A generic list of settings for the workspace. The settings are database pair dependant and can indicate default behavior for the mapping rules engine or turn on or off specific features. Such examples can be: convert_foreign_key_to_interleave=true, skip_triggers=false, ignore_non_table_synonyms=true",
+                    "description": "Optional. A generic list of settings for the workspace. The settings are database pair dependant and can indicate default behavior for the mapping rules engine or turn on or off specific features. Such examples can be: convert_foreign_key_to_interleave=true, skip_triggers=false, ignore_non_table_synonyms=true",
                     "type": "object"
                 },
                 "hasUncommittedChanges": {
@@ -2646,11 +2911,15 @@
             "id": "ConvertConversionWorkspaceRequest",
             "properties": {
                 "autoCommit": {
-                    "description": "Specifies whether the conversion workspace is to be committed automatically after the conversion.",
+                    "description": "Optional. Specifies whether the conversion workspace is to be committed automatically after the conversion.",
+                    "type": "boolean"
+                },
+                "convertFullPath": {
+                    "description": "Optional. Automatically convert the full entity path for each entity specified by the filter. For example, if the filter specifies a table, that table schema (and database if there is one) will also be converted.",
                     "type": "boolean"
                 },
                 "filter": {
-                    "description": "Filter the entities to convert. Leaving this field empty will convert all of the entities. Supports Google AIP-160 style filtering.",
+                    "description": "Optional. Filter the entities to convert. Leaving this field empty will convert all of the entities. Supports Google AIP-160 style filtering.",
                     "type": "string"
                 }
             },
@@ -2661,12 +2930,24 @@
             "id": "ConvertJobDetails",
             "properties": {
                 "filter": {
-                    "description": "AIP-160 based filter used to specify the entities to convert",
+                    "description": "Output only. AIP-160 based filter used to specify the entities to convert",
+                    "readOnly": true,
                     "type": "string"
                 }
             },
             "type": "object"
         },
+        "ConvertRowIdToColumn": {
+            "description": "Options to configure rule type ConvertROWIDToColumn. The rule is used to add column rowid to destination tables based on an Oracle rowid function/property. The rule filter field can refer to one or more entities. The rule scope can be one of: Table. This rule requires additional filter to be specified beyond the basic rule filter field, which is whether or not to work on tables which already have a primary key defined.",
+            "id": "ConvertRowIdToColumn",
+            "properties": {
+                "onlyIfNoPrimaryKey": {
+                    "description": "Required. Only work on tables without primary key defined",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "DatabaseEngineInfo": {
             "description": "The type and version of a source or destination database.",
             "id": "DatabaseEngineInfo",
@@ -2698,6 +2979,10 @@
             "description": "The base entity type for all the database related entities. The message contains the entity name, the name of its parent, the entity type, and the specific details per entity type.",
             "id": "DatabaseEntity",
             "properties": {
+                "database": {
+                    "$ref": "DatabaseInstanceEntity",
+                    "description": "Database."
+                },
                 "databaseFunction": {
                     "$ref": "FunctionEntity",
                     "description": "Function."
@@ -2706,6 +2991,13 @@
                     "$ref": "PackageEntity",
                     "description": "Package."
                 },
+                "entityDdl": {
+                    "description": "Details about the entity DDL script. Multiple DDL scripts are provided for child entities such as a table entity will have one DDL for the table with additional DDLs for each index, constraint and such.",
+                    "items": {
+                        "$ref": "EntityDdl"
+                    },
+                    "type": "array"
+                },
                 "entityType": {
                     "description": "The type of the database entity (table, view, index, ...).",
                     "enum": [
@@ -2746,6 +3038,13 @@
                     ],
                     "type": "string"
                 },
+                "issues": {
+                    "description": "Details about the various issues found for the entity.",
+                    "items": {
+                        "$ref": "EntityIssue"
+                    },
+                    "type": "array"
+                },
                 "mappings": {
                     "description": "Details about entity mappings. For source tree entities, this holds the draft entities which were generated by the mapping rules. For draft tree entities, this holds the source entities which were converted to form the draft entity. Destination entities will have no mapping details.",
                     "items": {
@@ -2753,6 +3052,10 @@
                     },
                     "type": "array"
                 },
+                "materializedView": {
+                    "$ref": "MaterializedViewEntity",
+                    "description": "Materialized view."
+                },
                 "parentEntity": {
                     "description": "The full name of the parent entity (e.g. schema name).",
                     "type": "string"
@@ -2797,6 +3100,10 @@
                     ],
                     "type": "string"
                 },
+                "udt": {
+                    "$ref": "UDTEntity",
+                    "description": "UDT."
+                },
                 "view": {
                     "$ref": "ViewEntity",
                     "description": "View."
@@ -2804,6 +3111,21 @@
             },
             "type": "object"
         },
+        "DatabaseInstanceEntity": {
+            "description": "DatabaseInstance acts as a parent entity to other database entities.",
+            "id": "DatabaseInstanceEntity",
+            "properties": {
+                "customFeatures": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Custom engine specific features.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
         "DatabaseType": {
             "description": "A message defining the database engine and provider.",
             "id": "DatabaseType",
@@ -2877,6 +3199,36 @@
             },
             "type": "object"
         },
+        "DoubleComparisonFilter": {
+            "description": "Filter based on relation between source value and compare value of type double in ConditionalColumnSetValue",
+            "id": "DoubleComparisonFilter",
+            "properties": {
+                "value": {
+                    "description": "Required. Double compare value to be used",
+                    "format": "double",
+                    "type": "number"
+                },
+                "valueComparison": {
+                    "description": "Required. Relation between source value and compare value",
+                    "enum": [
+                        "VALUE_COMPARISON_UNSPECIFIED",
+                        "VALUE_COMPARISON_IF_VALUE_SMALLER_THAN",
+                        "VALUE_COMPARISON_IF_VALUE_SMALLER_EQUAL_THAN",
+                        "VALUE_COMPARISON_IF_VALUE_LARGER_THAN",
+                        "VALUE_COMPARISON_IF_VALUE_LARGER_EQUAL_THAN"
+                    ],
+                    "enumDescriptions": [
+                        "Value comparison unspecified.",
+                        "Value is smaller than the Compare value.",
+                        "Value is smaller or equal than the Compare value.",
+                        "Value is larger than the Compare value.",
+                        "Value is larger or equal than the Compare value."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DumpFlag": {
             "description": "Dump flag definition.",
             "id": "DumpFlag",
@@ -2923,6 +3275,171 @@
             },
             "type": "object"
         },
+        "EntityDdl": {
+            "description": "A single DDL statement for a specific entity",
+            "id": "EntityDdl",
+            "properties": {
+                "ddl": {
+                    "description": "The actual ddl code.",
+                    "type": "string"
+                },
+                "ddlType": {
+                    "description": "Type of DDL (Create, Alter).",
+                    "type": "string"
+                },
+                "entity": {
+                    "description": "The name of the database entity the ddl refers to.",
+                    "type": "string"
+                },
+                "entityType": {
+                    "description": "The entity type (if the DDL is for a sub entity).",
+                    "enum": [
+                        "DATABASE_ENTITY_TYPE_UNSPECIFIED",
+                        "DATABASE_ENTITY_TYPE_SCHEMA",
+                        "DATABASE_ENTITY_TYPE_TABLE",
+                        "DATABASE_ENTITY_TYPE_COLUMN",
+                        "DATABASE_ENTITY_TYPE_CONSTRAINT",
+                        "DATABASE_ENTITY_TYPE_INDEX",
+                        "DATABASE_ENTITY_TYPE_TRIGGER",
+                        "DATABASE_ENTITY_TYPE_VIEW",
+                        "DATABASE_ENTITY_TYPE_SEQUENCE",
+                        "DATABASE_ENTITY_TYPE_STORED_PROCEDURE",
+                        "DATABASE_ENTITY_TYPE_FUNCTION",
+                        "DATABASE_ENTITY_TYPE_SYNONYM",
+                        "DATABASE_ENTITY_TYPE_DATABASE_PACKAGE",
+                        "DATABASE_ENTITY_TYPE_UDT",
+                        "DATABASE_ENTITY_TYPE_MATERIALIZED_VIEW",
+                        "DATABASE_ENTITY_TYPE_DATABASE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified database entity type.",
+                        "Schema.",
+                        "Table.",
+                        "Column.",
+                        "Constraint.",
+                        "Index.",
+                        "Trigger.",
+                        "View.",
+                        "Sequence.",
+                        "Stored Procedure.",
+                        "Function.",
+                        "Synonym.",
+                        "Package.",
+                        "UDT.",
+                        "Materialized View.",
+                        "Database."
+                    ],
+                    "type": "string"
+                },
+                "issueId": {
+                    "description": "EntityIssues found for this ddl.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EntityIssue": {
+            "description": "Issue related to the entity.",
+            "id": "EntityIssue",
+            "properties": {
+                "code": {
+                    "description": "Error/Warning code",
+                    "type": "string"
+                },
+                "ddl": {
+                    "description": "The ddl which caused the issue, if relevant.",
+                    "type": "string"
+                },
+                "entityType": {
+                    "description": "The entity type (if the DDL is for a sub entity).",
+                    "enum": [
+                        "DATABASE_ENTITY_TYPE_UNSPECIFIED",
+                        "DATABASE_ENTITY_TYPE_SCHEMA",
+                        "DATABASE_ENTITY_TYPE_TABLE",
+                        "DATABASE_ENTITY_TYPE_COLUMN",
+                        "DATABASE_ENTITY_TYPE_CONSTRAINT",
+                        "DATABASE_ENTITY_TYPE_INDEX",
+                        "DATABASE_ENTITY_TYPE_TRIGGER",
+                        "DATABASE_ENTITY_TYPE_VIEW",
+                        "DATABASE_ENTITY_TYPE_SEQUENCE",
+                        "DATABASE_ENTITY_TYPE_STORED_PROCEDURE",
+                        "DATABASE_ENTITY_TYPE_FUNCTION",
+                        "DATABASE_ENTITY_TYPE_SYNONYM",
+                        "DATABASE_ENTITY_TYPE_DATABASE_PACKAGE",
+                        "DATABASE_ENTITY_TYPE_UDT",
+                        "DATABASE_ENTITY_TYPE_MATERIALIZED_VIEW",
+                        "DATABASE_ENTITY_TYPE_DATABASE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified database entity type.",
+                        "Schema.",
+                        "Table.",
+                        "Column.",
+                        "Constraint.",
+                        "Index.",
+                        "Trigger.",
+                        "View.",
+                        "Sequence.",
+                        "Stored Procedure.",
+                        "Function.",
+                        "Synonym.",
+                        "Package.",
+                        "UDT.",
+                        "Materialized View.",
+                        "Database."
+                    ],
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Unique Issue ID.",
+                    "type": "string"
+                },
+                "message": {
+                    "description": "Issue detailed message",
+                    "type": "string"
+                },
+                "position": {
+                    "$ref": "Position",
+                    "description": "The position of the issue found, if relevant."
+                },
+                "severity": {
+                    "description": "Severity of the issue",
+                    "enum": [
+                        "ISSUE_SEVERITY_UNSPECIFIED",
+                        "ISSUE_SEVERITY_INFO",
+                        "ISSUE_SEVERITY_WARNING",
+                        "ISSUE_SEVERITY_ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified issue severity",
+                        "Info",
+                        "Warning",
+                        "Error"
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the issue.",
+                    "enum": [
+                        "ISSUE_TYPE_UNSPECIFIED",
+                        "ISSUE_TYPE_DDL",
+                        "ISSUE_TYPE_APPLY",
+                        "ISSUE_TYPE_CONVERT"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified issue type.",
+                        "Issue originated from the DDL",
+                        "Issue originated during the apply process",
+                        "Issue originated during the convert process"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "EntityMapping": {
             "description": "Details of the mappings of a database entity.",
             "id": "EntityMapping",
@@ -3044,6 +3561,17 @@
             },
             "type": "object"
         },
+        "EntityMove": {
+            "description": "Options to configure rule type EntityMove. The rule is used to move an entity to a new schema. The rule filter field can refer to one or more entities. The rule scope can be one of: Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT",
+            "id": "EntityMove",
+            "properties": {
+                "newSchema": {
+                    "description": "Required. The new schema",
+                    "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",
@@ -3085,6 +3613,27 @@
             },
             "type": "object"
         },
+        "FilterTableColumns": {
+            "description": "Options to configure rule type FilterTableColumns. The rule is used to filter the list of columns to include or exclude from a table. The rule filter field can refer to one entity. The rule scope can be: Table Only one of the two lists can be specified for the rule.",
+            "id": "FilterTableColumns",
+            "properties": {
+                "excludeColumns": {
+                    "description": "Optional. List of columns to be excluded for a particular table.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "includeColumns": {
+                    "description": "Optional. List of columns to be included for a particular table.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ForwardSshTunnelConnectivity": {
             "description": "Forward SSH Tunnel connectivity.",
             "id": "ForwardSshTunnelConnectivity",
@@ -3156,6 +3705,29 @@
             },
             "type": "object"
         },
+        "GenerateTcpProxyScriptRequest": {
+            "description": "Request message for 'GenerateTcpProxyScript' request.",
+            "id": "GenerateTcpProxyScriptRequest",
+            "properties": {
+                "vmMachineType": {
+                    "description": "Required. The type of the Compute instance that will host the proxy.",
+                    "type": "string"
+                },
+                "vmName": {
+                    "description": "Required. The name of the Compute instance that will host the proxy.",
+                    "type": "string"
+                },
+                "vmSubnet": {
+                    "description": "Required. The name of the subnet the Compute instance will use for private connectivity. Must be supplied in the form of projects/{project}/regions/{region}/subnetworks/{subnetwork}. Note: the region for the subnet must match the Compute instance region.",
+                    "type": "string"
+                },
+                "vmZone": {
+                    "description": "Optional. The Google Cloud Platform zone to create the VM in. The fully qualified name of the zone must be specified, including the region name, for example \"us-central1-b\". If not specified, uses the \"-b\" zone of the destination Connection Profile's region.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudClouddmsV1OperationMetadata": {
             "description": "Represents the metadata of the long-running operation.",
             "id": "GoogleCloudClouddmsV1OperationMetadata",
@@ -3205,18 +3777,18 @@
             "id": "ImportMappingRulesRequest",
             "properties": {
                 "autoCommit": {
-                    "description": "Should the conversion workspace be committed automatically after the import operation.",
+                    "description": "Required. Should the conversion workspace be committed automatically after the import operation.",
                     "type": "boolean"
                 },
                 "rulesFiles": {
-                    "description": "One or more rules files.",
+                    "description": "Required. One or more rules files.",
                     "items": {
                         "$ref": "RulesFile"
                     },
                     "type": "array"
                 },
                 "rulesFormat": {
-                    "description": "The format of the rules content file.",
+                    "description": "Required. The format of the rules content file.",
                     "enum": [
                         "IMPORT_RULES_FILE_FORMAT_UNSPECIFIED",
                         "IMPORT_RULES_FILE_FORMAT_HARBOUR_BRIDGE_SESSION_FILE",
@@ -3237,7 +3809,7 @@
             "id": "ImportRulesJobDetails",
             "properties": {
                 "fileFormat": {
-                    "description": "The requested file format.",
+                    "description": "Output only. The requested file format.",
                     "enum": [
                         "IMPORT_RULES_FILE_FORMAT_UNSPECIFIED",
                         "IMPORT_RULES_FILE_FORMAT_HARBOUR_BRIDGE_SESSION_FILE",
@@ -3248,13 +3820,15 @@
                         "HarbourBridge session file.",
                         "Ora2Pg configuration file."
                     ],
+                    "readOnly": true,
                     "type": "string"
                 },
                 "files": {
-                    "description": "File names used for the import rules job.",
+                    "description": "Output only. File names used for the import rules job.",
                     "items": {
                         "type": "string"
                     },
+                    "readOnly": true,
                     "type": "array"
                 }
             },
@@ -3294,6 +3868,36 @@
             },
             "type": "object"
         },
+        "IntComparisonFilter": {
+            "description": "Filter based on relation between source value and compare value of type integer in ConditionalColumnSetValue",
+            "id": "IntComparisonFilter",
+            "properties": {
+                "value": {
+                    "description": "Required. Integer compare value to be used",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "valueComparison": {
+                    "description": "Required. Relation between source value and compare value",
+                    "enum": [
+                        "VALUE_COMPARISON_UNSPECIFIED",
+                        "VALUE_COMPARISON_IF_VALUE_SMALLER_THAN",
+                        "VALUE_COMPARISON_IF_VALUE_SMALLER_EQUAL_THAN",
+                        "VALUE_COMPARISON_IF_VALUE_LARGER_THAN",
+                        "VALUE_COMPARISON_IF_VALUE_LARGER_EQUAL_THAN"
+                    ],
+                    "enumDescriptions": [
+                        "Value comparison unspecified.",
+                        "Value is smaller than the Compare value.",
+                        "Value is smaller or equal than the Compare value.",
+                        "Value is larger than the Compare value.",
+                        "Value is larger or equal than the Compare value."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ListConnectionProfilesResponse": {
             "description": "Response message for 'ListConnectionProfiles' request.",
             "id": "ListConnectionProfilesResponse",
@@ -3362,6 +3966,24 @@
             },
             "type": "object"
         },
+        "ListMappingRulesResponse": {
+            "description": "Response message for 'ListMappingRulesRequest' request.",
+            "id": "ListMappingRulesResponse",
+            "properties": {
+                "mappingRules": {
+                    "description": "The list of conversion workspace mapping rules.",
+                    "items": {
+                        "$ref": "MappingRule"
+                    },
+                    "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"
+                }
+            },
+            "type": "object"
+        },
         "ListMigrationJobsResponse": {
             "description": "Response message for 'ListMigrationJobs' request.",
             "id": "ListMigrationJobsResponse",
@@ -3476,6 +4098,190 @@
             },
             "type": "object"
         },
+        "MappingRule": {
+            "description": "Definition of a transformation that is to be applied to a group of entities in the source schema. Several such transformations can be applied to an entity sequentially to define the corresponding entity in the target schema.",
+            "id": "MappingRule",
+            "properties": {
+                "conditionalColumnSetValue": {
+                    "$ref": "ConditionalColumnSetValue",
+                    "description": "Optional. Rule to specify how the data contained in a column should be transformed (such as trimmed, rounded, etc) provided that the data meets certain criteria."
+                },
+                "convertRowidColumn": {
+                    "$ref": "ConvertRowIdToColumn",
+                    "description": "Optional. Rule to specify how multiple tables should be converted with an additional rowid column."
+                },
+                "displayName": {
+                    "description": "Optional. A human readable name",
+                    "type": "string"
+                },
+                "entityMove": {
+                    "$ref": "EntityMove",
+                    "description": "Optional. Rule to specify how multiple entities should be relocated into a different schema."
+                },
+                "filter": {
+                    "$ref": "MappingRuleFilter",
+                    "description": "Required. The rule filter"
+                },
+                "filterTableColumns": {
+                    "$ref": "FilterTableColumns",
+                    "description": "Optional. Rule to specify the list of columns to include or exclude from a table."
+                },
+                "multiColumnDataTypeChange": {
+                    "$ref": "MultiColumnDatatypeChange",
+                    "description": "Optional. Rule to specify how multiple columns should be converted to a different data type."
+                },
+                "multiEntityRename": {
+                    "$ref": "MultiEntityRename",
+                    "description": "Optional. Rule to specify how multiple entities should be renamed."
+                },
+                "name": {
+                    "description": "Full name of the mapping rule resource, in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{set}/mappingRule/{rule}.",
+                    "type": "string"
+                },
+                "revisionCreateTime": {
+                    "description": "Output only. The timestamp that the revision was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "revisionId": {
+                    "description": "Output only. The revision ID of the mapping rule. A new revision is committed whenever the mapping rule is changed in any way. The format is an 8-character hexadecimal string.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "ruleOrder": {
+                    "description": "Required. The order in which the rule is applied. Lower order rules are applied before higher value rules so they may end up being overridden.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "ruleScope": {
+                    "description": "Required. The rule scope",
+                    "enum": [
+                        "DATABASE_ENTITY_TYPE_UNSPECIFIED",
+                        "DATABASE_ENTITY_TYPE_SCHEMA",
+                        "DATABASE_ENTITY_TYPE_TABLE",
+                        "DATABASE_ENTITY_TYPE_COLUMN",
+                        "DATABASE_ENTITY_TYPE_CONSTRAINT",
+                        "DATABASE_ENTITY_TYPE_INDEX",
+                        "DATABASE_ENTITY_TYPE_TRIGGER",
+                        "DATABASE_ENTITY_TYPE_VIEW",
+                        "DATABASE_ENTITY_TYPE_SEQUENCE",
+                        "DATABASE_ENTITY_TYPE_STORED_PROCEDURE",
+                        "DATABASE_ENTITY_TYPE_FUNCTION",
+                        "DATABASE_ENTITY_TYPE_SYNONYM",
+                        "DATABASE_ENTITY_TYPE_DATABASE_PACKAGE",
+                        "DATABASE_ENTITY_TYPE_UDT",
+                        "DATABASE_ENTITY_TYPE_MATERIALIZED_VIEW",
+                        "DATABASE_ENTITY_TYPE_DATABASE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified database entity type.",
+                        "Schema.",
+                        "Table.",
+                        "Column.",
+                        "Constraint.",
+                        "Index.",
+                        "Trigger.",
+                        "View.",
+                        "Sequence.",
+                        "Stored Procedure.",
+                        "Function.",
+                        "Synonym.",
+                        "Package.",
+                        "UDT.",
+                        "Materialized View.",
+                        "Database."
+                    ],
+                    "type": "string"
+                },
+                "setTablePrimaryKey": {
+                    "$ref": "SetTablePrimaryKey",
+                    "description": "Optional. Rule to specify the primary key for a table"
+                },
+                "singleColumnChange": {
+                    "$ref": "SingleColumnChange",
+                    "description": "Optional. Rule to specify how a single column is converted."
+                },
+                "singleEntityRename": {
+                    "$ref": "SingleEntityRename",
+                    "description": "Optional. Rule to specify how a single entity should be renamed."
+                },
+                "singlePackageChange": {
+                    "$ref": "SinglePackageChange",
+                    "description": "Optional. Rule to specify how a single package is converted."
+                },
+                "sourceSqlChange": {
+                    "$ref": "SourceSqlChange",
+                    "description": "Optional. Rule to change the sql code for an entity, for example, function, procedure."
+                },
+                "state": {
+                    "description": "Optional. The mapping rule state",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ENABLED",
+                        "DISABLED",
+                        "DELETED"
+                    ],
+                    "enumDescriptions": [
+                        "The state of the mapping rule is unknown.",
+                        "The rule is enabled.",
+                        "The rule is disabled.",
+                        "The rule is logically deleted."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MappingRuleFilter": {
+            "description": "A filter defining the entities that a mapping rule should be applied to. When more than one field is specified, the rule is applied only to entities which match all the fields.",
+            "id": "MappingRuleFilter",
+            "properties": {
+                "entities": {
+                    "description": "Optional. The rule should be applied to specific entities defined by their fully qualified names.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "entityNameContains": {
+                    "description": "Optional. The rule should be applied to entities whose non-qualified name contains the given string.",
+                    "type": "string"
+                },
+                "entityNamePrefix": {
+                    "description": "Optional. The rule should be applied to entities whose non-qualified name starts with the given prefix.",
+                    "type": "string"
+                },
+                "entityNameSuffix": {
+                    "description": "Optional. The rule should be applied to entities whose non-qualified name ends with the given suffix.",
+                    "type": "string"
+                },
+                "parentEntity": {
+                    "description": "Optional. The rule should be applied to entities whose parent entity (fully qualified name) matches the given value. For example, if the rule applies to a table entity, the expected value should be a schema (schema). If the rule applies to a column or index entity, the expected value can be either a schema (schema) or a table (schema.table)",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MaterializedViewEntity": {
+            "description": "MaterializedView's parent is a schema.",
+            "id": "MaterializedViewEntity",
+            "properties": {
+                "customFeatures": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Custom engine specific features.",
+                    "type": "object"
+                },
+                "sqlCode": {
+                    "description": "The SQL code which creates the view.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "MigrationJob": {
             "description": "Represents a Database Migration Service migration job object.",
             "id": "MigrationJob",
@@ -3677,11 +4483,13 @@
                         "UNSUPPORTED_TABLE_DEFINITION",
                         "UNSUPPORTED_DEFINER",
                         "CANT_RESTART_RUNNING_MIGRATION",
+                        "SOURCE_ALREADY_SETUP",
                         "TABLES_WITH_LIMITED_SUPPORT",
                         "UNSUPPORTED_DATABASE_LOCALE",
                         "UNSUPPORTED_DATABASE_FDW_CONFIG",
                         "ERROR_RDBMS",
-                        "SOURCE_SIZE_EXCEEDS_THRESHOLD"
+                        "SOURCE_SIZE_EXCEEDS_THRESHOLD",
+                        "EXISTING_CONFLICTING_DATABASES"
                     ],
                     "enumDescriptions": [
                         "An unknown error occurred",
@@ -3704,11 +4512,13 @@
                         "The table definition is not support due to missing primary key or replica identity.",
                         "The definer is not supported.",
                         "Migration is already running at the time of restart request.",
+                        "The source already has a replication setup.",
                         "The source has tables with limited support. E.g. PostgreSQL tables without primary keys.",
                         "The source uses an unsupported locale.",
                         "The source uses an unsupported Foreign Data Wrapper configuration.",
                         "There was an underlying RDBMS error.",
-                        "The source DB size in Bytes exceeds a certain threshold. The migration might require an increase of quota, or might not be supported."
+                        "The source DB size in Bytes exceeds a certain threshold. The migration might require an increase of quota, or might not be supported.",
+                        "The destination DB contains existing databases that are conflicting with those in the source DB."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -3726,6 +4536,86 @@
             },
             "type": "object"
         },
+        "MultiColumnDatatypeChange": {
+            "description": "Options to configure rule type MultiColumnDatatypeChange. The rule is used to change the data type and associated properties of multiple columns at once. The rule filter field can refer to one or more entities. The rule scope can be one of:Column. This rule requires additional filters to be specified beyond the basic rule filter field, which is the source data type, but the rule supports additional filtering capabilities such as the minimum and maximum field length. All additional filters which are specified are required to be met in order for the rule to be applied (logical AND between the fields).",
+            "id": "MultiColumnDatatypeChange",
+            "properties": {
+                "customFeatures": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Optional. Custom engine specific features.",
+                    "type": "object"
+                },
+                "newDataType": {
+                    "description": "Required. New data type.",
+                    "type": "string"
+                },
+                "overrideFractionalSecondsPrecision": {
+                    "description": "Optional. Column fractional seconds precision - used only for timestamp based datatypes - if not specified and relevant uses the source column fractional seconds precision.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "overrideLength": {
+                    "description": "Optional. Column length - e.g. varchar (50) - if not specified and relevant uses the source column length.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "overridePrecision": {
+                    "description": "Optional. Column precision - when relevant - if not specified and relevant uses the source column precision.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "overrideScale": {
+                    "description": "Optional. Column scale - when relevant - if not specified and relevant uses the source column scale.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sourceDataTypeFilter": {
+                    "description": "Required. Filter on source data type.",
+                    "type": "string"
+                },
+                "sourceNumericFilter": {
+                    "$ref": "SourceNumericFilter",
+                    "description": "Optional. Filter for fixed point number data types such as NUMERIC/NUMBER."
+                },
+                "sourceTextFilter": {
+                    "$ref": "SourceTextFilter",
+                    "description": "Optional. Filter for text-based data types like varchar."
+                }
+            },
+            "type": "object"
+        },
+        "MultiEntityRename": {
+            "description": "Options to configure rule type MultiEntityRename. The rule is used to rename multiple entities. The rule filter field can refer to one or more entities. The rule scope can be one of: Database, Schema, Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT",
+            "id": "MultiEntityRename",
+            "properties": {
+                "newNamePattern": {
+                    "description": "Optional. The pattern used to generate the new entity's name. This pattern must include the characters '{name}', which will be replaced with the name of the original entity. For example, the pattern 't_{name}' for an entity name jobs would be converted to 't_jobs'. If unspecified, the default value for this field is '{name}'",
+                    "type": "string"
+                },
+                "sourceNameTransformation": {
+                    "description": "Optional. Additional transformation that can be done on the source entity name before it is being used by the new_name_pattern, for example lower case. If no transformation is desired, use NO_TRANSFORMATION",
+                    "enum": [
+                        "ENTITY_NAME_TRANSFORMATION_UNSPECIFIED",
+                        "ENTITY_NAME_TRANSFORMATION_NO_TRANSFORMATION",
+                        "ENTITY_NAME_TRANSFORMATION_LOWER_CASE",
+                        "ENTITY_NAME_TRANSFORMATION_UPPER_CASE",
+                        "ENTITY_NAME_TRANSFORMATION_CAPITALIZED_CASE"
+                    ],
+                    "enumDescriptions": [
+                        "Entity name transformation unspecified.",
+                        "No transformation.",
+                        "Transform to lower case.",
+                        "Transform to upper case.",
+                        "Transform to capitalized case."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "MySqlConnectionProfile": {
             "description": "Specifies connection parameters required specifically for MySQL databases.",
             "id": "MySqlConnectionProfile",
@@ -3832,6 +4722,10 @@
                     "$ref": "PrivateConnectivity",
                     "description": "Private connectivity."
                 },
+                "ssl": {
+                    "$ref": "SslConfig",
+                    "description": "SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above."
+                },
                 "staticServiceIpConnectivity": {
                     "$ref": "StaticServiceIpConnectivity",
                     "description": "Static Service IP connectivity."
@@ -3897,6 +4791,33 @@
             },
             "type": "object"
         },
+        "Position": {
+            "description": "Issue position.",
+            "id": "Position",
+            "properties": {
+                "column": {
+                    "description": "Issue column number",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "length": {
+                    "description": "Issue length",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "line": {
+                    "description": "Issue line number",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "offset": {
+                    "description": "Issue offset",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "PostgreSqlConnectionProfile": {
             "description": "Specifies connection parameters required specifically for PostgreSQL databases.",
             "id": "PostgreSqlConnectionProfile",
@@ -4127,16 +5048,28 @@
             "properties": {},
             "type": "object"
         },
+        "RoundToScale": {
+            "description": "This allows the data to change scale, for example if the source is 2 digits after the decimal point, specify round to scale value = 2. If for example the value needs to be converted to an integer, use round to scale value = 0.",
+            "id": "RoundToScale",
+            "properties": {
+                "scale": {
+                    "description": "Required. Scale value to be used",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "RulesFile": {
             "description": "Details of a single rules file.",
             "id": "RulesFile",
             "properties": {
                 "rulesContent": {
-                    "description": "The text content of the rules that needs to be converted.",
+                    "description": "Required. The text content of the rules that needs to be converted.",
                     "type": "string"
                 },
                 "rulesSourceFilename": {
-                    "description": "The filename of the rules that needs to be converted. The filename is used mainly so that future logs of the import rules job contain it, and can therefore be searched by it.",
+                    "description": "Required. The filename of the rules that needs to be converted. The filename is used mainly so that future logs of the import rules job contain it, and can therefore be searched by it.",
                     "type": "string"
                 }
             },
@@ -4180,11 +5113,11 @@
                     "type": "boolean"
                 },
                 "destinationConnectionProfile": {
-                    "description": "Fully qualified (Uri) name of the destination connection profile.",
+                    "description": "Optional. Fully qualified (Uri) name of the destination connection profile.",
                     "type": "string"
                 },
                 "sourceConnectionProfile": {
-                    "description": "Fully qualified (Uri) name of the source connection profile.",
+                    "description": "Optional. Fully qualified (Uri) name of the source connection profile.",
                     "type": "string"
                 }
             },
@@ -4195,7 +5128,8 @@
             "id": "SeedJobDetails",
             "properties": {
                 "connectionProfile": {
-                    "description": "The connection profile which was used for the seed job.",
+                    "description": "Output only. The connection profile which was used for the seed job.",
+                    "readOnly": true,
                     "type": "string"
                 }
             },
@@ -4261,6 +5195,200 @@
             },
             "type": "object"
         },
+        "SetTablePrimaryKey": {
+            "description": "Options to configure rule type SetTablePrimaryKey. The rule is used to specify the columns and name to configure/alter the primary key of a table. The rule filter field can refer to one entity. The rule scope can be one of: Table.",
+            "id": "SetTablePrimaryKey",
+            "properties": {
+                "primaryKey": {
+                    "description": "Optional. Name for the primary key",
+                    "type": "string"
+                },
+                "primaryKeyColumns": {
+                    "description": "Required. List of column names for the primary key",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SingleColumnChange": {
+            "description": "Options to configure rule type SingleColumnChange. The rule is used to change the properties of a column. The rule filter field can refer to one entity. The rule scope can be one of: Column. When using this rule, if a field is not specified than the destination column's configuration will be the same as the one in the source column..",
+            "id": "SingleColumnChange",
+            "properties": {
+                "array": {
+                    "description": "Optional. Is the column of array type.",
+                    "type": "boolean"
+                },
+                "arrayLength": {
+                    "description": "Optional. The length of the array, only relevant if the column type is an array.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "autoGenerated": {
+                    "description": "Optional. Is the column auto-generated/identity.",
+                    "type": "boolean"
+                },
+                "charset": {
+                    "description": "Optional. Charset override - instead of table level charset.",
+                    "type": "string"
+                },
+                "collation": {
+                    "description": "Optional. Collation override - instead of table level collation.",
+                    "type": "string"
+                },
+                "comment": {
+                    "description": "Optional. Comment associated with the column.",
+                    "type": "string"
+                },
+                "customFeatures": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Optional. Custom engine specific features.",
+                    "type": "object"
+                },
+                "dataType": {
+                    "description": "Optional. Column data type name.",
+                    "type": "string"
+                },
+                "fractionalSecondsPrecision": {
+                    "description": "Optional. Column fractional seconds precision - e.g. 2 as in timestamp (2) - when relevant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "length": {
+                    "description": "Optional. Column length - e.g. 50 as in varchar (50) - when relevant.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "nullable": {
+                    "description": "Optional. Is the column nullable.",
+                    "type": "boolean"
+                },
+                "precision": {
+                    "description": "Optional. Column precision - e.g. 8 as in double (8,2) - when relevant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "scale": {
+                    "description": "Optional. Column scale - e.g. 2 as in double (8,2) - when relevant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "setValues": {
+                    "description": "Optional. Specifies the list of values allowed in the column.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "udt": {
+                    "description": "Optional. Is the column a UDT (User-defined Type).",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "SingleEntityRename": {
+            "description": "Options to configure rule type SingleEntityRename. The rule is used to rename an entity. The rule filter field can refer to only one entity. The rule scope can be one of: Database, Schema, Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT, Synonym",
+            "id": "SingleEntityRename",
+            "properties": {
+                "newName": {
+                    "description": "Required. The new name of the destination entity",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SinglePackageChange": {
+            "description": "Options to configure rule type SinglePackageChange. The rule is used to alter the sql code for a package entities. The rule filter field can refer to one entity. The rule scope can be: Package",
+            "id": "SinglePackageChange",
+            "properties": {
+                "packageBody": {
+                    "description": "Optional. Sql code for package body",
+                    "type": "string"
+                },
+                "packageDescription": {
+                    "description": "Optional. Sql code for package description",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SourceNumericFilter": {
+            "description": "Filter for fixed point number data types such as NUMERIC/NUMBER",
+            "id": "SourceNumericFilter",
+            "properties": {
+                "numericFilterOption": {
+                    "description": "Required. Enum to set the option defining the datatypes numeric filter has to be applied to",
+                    "enum": [
+                        "NUMERIC_FILTER_OPTION_UNSPECIFIED",
+                        "NUMERIC_FILTER_OPTION_ALL",
+                        "NUMERIC_FILTER_OPTION_LIMIT",
+                        "NUMERIC_FILTER_OPTION_LIMITLESS"
+                    ],
+                    "enumDescriptions": [
+                        "Numeric filter option unspecified",
+                        "Numeric filter option that matches all numeric columns.",
+                        "Numeric filter option that matches columns having numeric datatypes with specified precision and scale within the limited range of filter.",
+                        "Numeric filter option that matches only the numeric columns with no precision and scale specified."
+                    ],
+                    "type": "string"
+                },
+                "sourceMaxPrecisionFilter": {
+                    "description": "Optional. The filter will match columns with precision smaller than or equal to this number.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sourceMaxScaleFilter": {
+                    "description": "Optional. The filter will match columns with scale smaller than or equal to this number.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sourceMinPrecisionFilter": {
+                    "description": "Optional. The filter will match columns with precision greater than or equal to this number.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sourceMinScaleFilter": {
+                    "description": "Optional. The filter will match columns with scale greater than or equal to this number.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "SourceSqlChange": {
+            "description": "Options to configure rule type SourceSqlChange. The rule is used to alter the sql code for database entities. The rule filter field can refer to one entity. The rule scope can be: StoredProcedure, Function, Trigger, View",
+            "id": "SourceSqlChange",
+            "properties": {
+                "sqlCode": {
+                    "description": "Required. Sql code for source (stored procedure, function, trigger or view)",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SourceTextFilter": {
+            "description": "Filter for text-based data types like varchar.",
+            "id": "SourceTextFilter",
+            "properties": {
+                "sourceMaxLengthFilter": {
+                    "description": "Optional. The filter will match columns with length smaller than or equal to this number.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "sourceMinLengthFilter": {
+                    "description": "Optional. The filter will match columns with length greater than or equal to this number.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "SqlAclEntry": {
             "description": "An entry for an Access Control list.",
             "id": "SqlAclEntry",
@@ -4537,6 +5665,17 @@
             },
             "type": "object"
         },
+        "TcpProxyScript": {
+            "description": "Response message for 'GenerateTcpProxyScript' request.",
+            "id": "TcpProxyScript",
+            "properties": {
+                "script": {
+                    "description": "The TCP Proxy configuration script.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "TestIamPermissionsRequest": {
             "description": "Request message for `TestIamPermissions` method.",
             "id": "TestIamPermissionsRequest",
@@ -4599,6 +5738,29 @@
             },
             "type": "object"
         },
+        "UDTEntity": {
+            "description": "UDT's parent is a schema.",
+            "id": "UDTEntity",
+            "properties": {
+                "customFeatures": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Custom engine specific features.",
+                    "type": "object"
+                },
+                "udtBody": {
+                    "description": "The SQL code which creates the udt body.",
+                    "type": "string"
+                },
+                "udtSqlCode": {
+                    "description": "The SQL code which creates the udt.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "UserPassword": {
             "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
             "id": "UserPassword",
@@ -4619,10 +5781,99 @@
             },
             "type": "object"
         },
+        "ValueListFilter": {
+            "description": "A list of values to filter by in ConditionalColumnSetValue",
+            "id": "ValueListFilter",
+            "properties": {
+                "ignoreCase": {
+                    "description": "Required. Whether to ignore case when filtering by values. Defaults to false",
+                    "type": "boolean"
+                },
+                "valuePresentList": {
+                    "description": "Required. Indicates whether the filter matches rows with values that are present in the list or those with values not present in it.",
+                    "enum": [
+                        "VALUE_PRESENT_IN_LIST_UNSPECIFIED",
+                        "VALUE_PRESENT_IN_LIST_IF_VALUE_LIST",
+                        "VALUE_PRESENT_IN_LIST_IF_VALUE_NOT_LIST"
+                    ],
+                    "enumDescriptions": [
+                        "Value present in list unspecified",
+                        "If the source value is in the supplied list at value_list",
+                        "If the source value is not in the supplied list at value_list"
+                    ],
+                    "type": "string"
+                },
+                "values": {
+                    "description": "Required. The list to be used to filter by",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ValueTransformation": {
+            "description": "Description of data transformation during migration as part of the ConditionalColumnSetValue.",
+            "id": "ValueTransformation",
+            "properties": {
+                "applyHash": {
+                    "$ref": "ApplyHash",
+                    "description": "Optional. Applies a hash function on the data"
+                },
+                "assignMaxValue": {
+                    "$ref": "Empty",
+                    "description": "Optional. Set to max_value - if integer or numeric, will use int.maxvalue, etc"
+                },
+                "assignMinValue": {
+                    "$ref": "Empty",
+                    "description": "Optional. Set to min_value - if integer or numeric, will use int.minvalue, etc"
+                },
+                "assignNull": {
+                    "$ref": "Empty",
+                    "description": "Optional. Set to null"
+                },
+                "assignSpecificValue": {
+                    "$ref": "AssignSpecificValue",
+                    "description": "Optional. Set to a specific value (value is converted to fit the target data type)"
+                },
+                "doubleComparison": {
+                    "$ref": "DoubleComparisonFilter",
+                    "description": "Optional. Filter on relation between source value and compare value of type double."
+                },
+                "intComparison": {
+                    "$ref": "IntComparisonFilter",
+                    "description": "Optional. Filter on relation between source value and compare value of type integer."
+                },
+                "isNull": {
+                    "$ref": "Empty",
+                    "description": "Optional. Value is null"
+                },
+                "roundScale": {
+                    "$ref": "RoundToScale",
+                    "description": "Optional. Allows the data to change scale"
+                },
+                "valueList": {
+                    "$ref": "ValueListFilter",
+                    "description": "Optional. Value is found in the specified list."
+                }
+            },
+            "type": "object"
+        },
         "VerifyMigrationJobRequest": {
             "description": "Request message for 'VerifyMigrationJob' request.",
             "id": "VerifyMigrationJobRequest",
-            "properties": {},
+            "properties": {
+                "migrationJob": {
+                    "$ref": "MigrationJob",
+                    "description": "Optional. The changed migration job parameters to verify. It will not update the migration job."
+                },
+                "updateMask": {
+                    "description": "Optional. Field mask is used to specify the changed fields to be verified. It will not update the migration job.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
             "type": "object"
         },
         "ViewEntity": {
@@ -4707,9 +5958,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Database Migration API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/datapipelines__v1.json b/discovery/googleapis/datapipelines__v1.json
index 875d765..bfd8cd6 100644
--- a/discovery/googleapis/datapipelines__v1.json
+++ b/discovery/googleapis/datapipelines__v1.json
@@ -24,6 +24,13 @@
     "name": "datapipelines",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230702",
+    "rootUrl": "https://datapipelines.googleapis.com/",
+    "servicePath": "",
+    "title": "Data pipelines API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -367,8 +373,6 @@
             }
         }
     },
-    "revision": "20230507",
-    "rootUrl": "https://datapipelines.googleapis.com/",
     "schemas": {
         "GoogleCloudDatapipelinesV1DataflowJobDetails": {
             "description": "Pipeline job details specific to the Dataflow API. This is encapsulated here to allow for more executors to store their specific details separately.",
@@ -1014,9 +1018,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Data pipelines API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/dataplex__v1.json b/discovery/googleapis/dataplex__v1.json
index f3db246..0ab0126 100644
--- a/discovery/googleapis/dataplex__v1.json
+++ b/discovery/googleapis/dataplex__v1.json
@@ -24,6 +24,13 @@
     "name": "dataplex",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230628",
+    "rootUrl": "https://dataplex.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Dataplex API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -893,6 +899,11 @@
                                                 "parent"
                                             ],
                                             "parameters": {
+                                                "filter": {
+                                                    "description": "Optional. An expression for filtering the results of the ListDataScanJobs request.If unspecified, all datascan jobs will be returned. Multiple filters can be applied (with AND, OR logical operators). Filters are case-sensitive.Allowed fields are: start_time end_timestart_time and end_time expect RFC-3339 formatted strings (e.g. 2018-10-08T18:30:00-07:00).For instance, 'start_time > 2018-10-08T00:00:00.123456789Z AND end_time < 2018-10-09T00:00:00.123456789Z' limits results to DataScanJobs between specified start and end times.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
                                                 "pageSize": {
                                                     "description": "Optional. Maximum number of DataScanJobs to return. The service may return fewer than this value. If unspecified, at most 10 DataScanJobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                                                     "format": "int32",
@@ -4261,8 +4272,6 @@
             }
         }
     },
-    "revision": "20230503",
-    "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); } ",
@@ -5192,7 +5201,7 @@
                     "description": "String type field information."
                 },
                 "topNValues": {
-                    "description": "The list of top N non-null values and number of times they occur in the scanned data. N is 10 or equal to the number of distinct values in the field, whichever is smaller. Not available for complex non-groupable field type RECORD and fields with REPEATABLE mode.",
+                    "description": "The list of top N non-null values, frequency and ratio with which they occur in the scanned data. N is 10 or equal to the number of distinct values in the field, whichever is smaller. Not available for complex non-groupable field type RECORD and fields with REPEATABLE mode.",
                     "items": {
                         "$ref": "GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoTopNValue"
                     },
@@ -5256,7 +5265,7 @@
                     "type": "string"
                 },
                 "quartiles": {
-                    "description": "A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of quartile values for the scanned data, occurring in order Q1, median, Q3.",
+                    "description": "A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of approximate quartile values for the scanned data, occurring in order Q1, median, Q3.",
                     "items": {
                         "format": "int64",
                         "type": "string"
@@ -5302,6 +5311,11 @@
                     "format": "int64",
                     "type": "string"
                 },
+                "ratio": {
+                    "description": "Ratio of the corresponding value in the field against the total number of rows in the scanned data.",
+                    "format": "double",
+                    "type": "number"
+                },
                 "value": {
                     "description": "String value of a top N non-null value.",
                     "type": "string"
@@ -5313,6 +5327,14 @@
             "description": "DataProfileScan related setting.",
             "id": "GoogleCloudDataplexV1DataProfileSpec",
             "properties": {
+                "excludeFields": {
+                    "$ref": "GoogleCloudDataplexV1DataProfileSpecSelectedFields",
+                    "description": "Optional. The fields to exclude from data profile.If specified, the fields will be excluded from data profile, regardless of include_fields value."
+                },
+                "includeFields": {
+                    "$ref": "GoogleCloudDataplexV1DataProfileSpecSelectedFields",
+                    "description": "Optional. The fields to include in data profile.If not specified, all fields at the time of profile scan job execution are included, except for ones listed in exclude_fields."
+                },
                 "rowFilter": {
                     "description": "Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in BigQuery standard SQL syntax. Example: col1 >= 0 AND col2 < 10",
                     "type": "string"
@@ -5325,6 +5347,20 @@
             },
             "type": "object"
         },
+        "GoogleCloudDataplexV1DataProfileSpecSelectedFields": {
+            "description": "The specification for fields to include or exclude in data profile scan.",
+            "id": "GoogleCloudDataplexV1DataProfileSpecSelectedFields",
+            "properties": {
+                "fieldNames": {
+                    "description": "Optional. Expected input is a list of fully qualified names of fields as in the schema.Only top-level field names for nested fields are supported. For instance, if 'x' is of nested field type, listing 'x' is supported but 'x.y.z' is not supported. Here 'y' and 'y.z' are nested fields of 'x'.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDataplexV1DataQualityDimensionResult": {
             "description": "DataQualityDimensionResult provides a more detailed, per-dimension view of the results.",
             "id": "GoogleCloudDataplexV1DataQualityDimensionResult",
@@ -5378,50 +5414,58 @@
                     "description": "Optional. The unnested column which this rule is evaluated against.",
                     "type": "string"
                 },
+                "description": {
+                    "description": "Optional. Description of the rule. The maximum length is 1,024 characters.",
+                    "type": "string"
+                },
                 "dimension": {
                     "description": "Required. The dimension a rule belongs to. Results are also aggregated at the dimension level. Supported dimensions are \"COMPLETENESS\", \"ACCURACY\", \"CONSISTENCY\", \"VALIDITY\", \"UNIQUENESS\", \"INTEGRITY\"",
                     "type": "string"
                 },
                 "ignoreNull": {
-                    "description": "Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.Only applicable to ColumnMap rules.",
+                    "description": "Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for row-level type rules.",
                     "type": "boolean"
                 },
+                "name": {
+                    "description": "Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter.",
+                    "type": "string"
+                },
                 "nonNullExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleNonNullExpectation",
-                    "description": "ColumnMap rule which evaluates whether each column value is null."
+                    "description": "Row-level rule which evaluates whether each column value is null."
                 },
                 "rangeExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleRangeExpectation",
-                    "description": "ColumnMap rule which evaluates whether each column value lies between a specified range."
+                    "description": "Row-level rule which evaluates whether each column value lies between a specified range."
                 },
                 "regexExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleRegexExpectation",
-                    "description": "ColumnMap rule which evaluates whether each column value matches a specified regex."
+                    "description": "Row-level rule which evaluates whether each column value matches a specified regex."
                 },
                 "rowConditionExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleRowConditionExpectation",
-                    "description": "Table rule which evaluates whether each row passes the specified condition."
+                    "description": "Row-level rule which evaluates whether each row in a table passes the specified condition."
                 },
                 "setExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleSetExpectation",
-                    "description": "ColumnMap rule which evaluates whether each column value is contained by a specified set."
+                    "description": "Row-level rule which evaluates whether each column value is contained by a specified set."
                 },
                 "statisticRangeExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleStatisticRangeExpectation",
-                    "description": "ColumnAggregate rule which evaluates whether the column aggregate statistic lies between a specified range."
+                    "description": "Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range."
                 },
                 "tableConditionExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleTableConditionExpectation",
-                    "description": "Table rule which evaluates whether the provided expression is true."
+                    "description": "Aggregate rule which evaluates whether the provided expression is true for a table."
                 },
                 "threshold": {
-                    "description": "Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).",
+                    "description": "Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules.",
                     "format": "double",
                     "type": "number"
                 },
                 "uniquenessExpectation": {
                     "$ref": "GoogleCloudDataplexV1DataQualityRuleUniquenessExpectation",
-                    "description": "ColumnAggregate rule which evaluates whether the column has duplicates."
+                    "description": "Aggregate rule which evaluates whether the column has duplicates."
                 }
             },
             "type": "object"
@@ -5471,12 +5515,12 @@
             "id": "GoogleCloudDataplexV1DataQualityRuleResult",
             "properties": {
                 "evaluatedCount": {
-                    "description": "The number of rows a rule was evaluated against. This field is only valid for ColumnMap type rules.Evaluated count can be configured to either include all rows (default) - with null rows automatically failing rule evaluation, or exclude null rows from the evaluated_count, by setting ignore_nulls = true.",
+                    "description": "The number of rows a rule was evaluated against.This field is only valid for row-level type rules.Evaluated count can be configured to either include all rows (default) - with null rows automatically failing rule evaluation, or exclude null rows from the evaluated_count, by setting ignore_nulls = true.",
                     "format": "int64",
                     "type": "string"
                 },
                 "failingRowsQuery": {
-                    "description": "The query to find rows that did not pass this rule. Only applies to ColumnMap and RowCondition rules.",
+                    "description": "The query to find rows that did not pass this rule.This field is only valid for row-level type rules.",
                     "type": "string"
                 },
                 "nullCount": {
@@ -5485,7 +5529,7 @@
                     "type": "string"
                 },
                 "passRatio": {
-                    "description": "The ratio of passed_count / evaluated_count. This field is only valid for ColumnMap type rules.",
+                    "description": "The ratio of passed_count / evaluated_count.This field is only valid for row-level type rules.",
                     "format": "double",
                     "type": "number"
                 },
@@ -5494,7 +5538,7 @@
                     "type": "boolean"
                 },
                 "passedCount": {
-                    "description": "The number of rows which passed a rule evaluation. This field is only valid for ColumnMap type rules.",
+                    "description": "The number of rows which passed a rule evaluation.This field is only valid for row-level type rules.",
                     "format": "int64",
                     "type": "string"
                 },
@@ -5586,6 +5630,107 @@
             "properties": {},
             "type": "object"
         },
+        "GoogleCloudDataplexV1DataQualityScanRuleResult": {
+            "description": "Information about the result of a data quality rule for data quality scan. The monitored resource is 'DataScan'.",
+            "id": "GoogleCloudDataplexV1DataQualityScanRuleResult",
+            "properties": {
+                "column": {
+                    "description": "The column which this rule is evaluated against.",
+                    "type": "string"
+                },
+                "dataSource": {
+                    "description": "The data source of the data scan (e.g. BigQuery table name).",
+                    "type": "string"
+                },
+                "evaluatedRowCount": {
+                    "description": "The number of rows evaluated against the data quality rule. This field is only valid for rules of PER_ROW evaluation type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "evalutionType": {
+                    "description": "The evaluation type of the data quality rule.",
+                    "enum": [
+                        "EVALUATION_TYPE_UNSPECIFIED",
+                        "PER_ROW",
+                        "AGGREGATE"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified evaluation type.",
+                        "The rule evaluation is done at per row level.",
+                        "The rule evaluation is done for an aggregate of rows."
+                    ],
+                    "type": "string"
+                },
+                "jobId": {
+                    "description": "Identifier of the specific data scan job this log entry is for.",
+                    "type": "string"
+                },
+                "nullRowCount": {
+                    "description": "The number of rows with null values in the specified column.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "passedRowCount": {
+                    "description": "The number of rows which passed a rule evaluation. This field is only valid for rules of PER_ROW evaluation type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "result": {
+                    "description": "The result of the data quality rule.",
+                    "enum": [
+                        "RESULT_UNSPECIFIED",
+                        "PASSED",
+                        "FAILED"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified result.",
+                        "The data quality rule passed.",
+                        "The data quality rule failed."
+                    ],
+                    "type": "string"
+                },
+                "ruleDimension": {
+                    "description": "The dimension of the data quality rule.",
+                    "type": "string"
+                },
+                "ruleName": {
+                    "description": "The name of the data quality rule.",
+                    "type": "string"
+                },
+                "ruleType": {
+                    "description": "The type of the data quality rule.",
+                    "enum": [
+                        "RULE_TYPE_UNSPECIFIED",
+                        "NON_NULL_EXPECTATION",
+                        "RANGE_EXPECTATION",
+                        "REGEX_EXPECTATION",
+                        "ROW_CONDITION_EXPECTATION",
+                        "SET_EXPECTATION",
+                        "STATISTIC_RANGE_EXPECTATION",
+                        "TABLE_CONDITION_EXPECTATION",
+                        "UNIQUENESS_EXPECTATION"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified rule type.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#nonnullexpectation.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#rangeexpectation.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#regexexpectation.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#rowconditionexpectation.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#setexpectation.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#statisticrangeexpectation.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#tableconditionexpectation.",
+                        "Please see https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#uniquenessexpectation."
+                    ],
+                    "type": "string"
+                },
+                "thresholdPercent": {
+                    "description": "The passing threshold (0.0, 100.0) of the data quality rule.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDataplexV1DataQualitySpec": {
             "description": "DataQualityScan related setting.",
             "id": "GoogleCloudDataplexV1DataQualitySpec",
@@ -5755,6 +5900,10 @@
                     "description": "The message describing the data scan job event.",
                     "type": "string"
                 },
+                "postScanActionsResult": {
+                    "$ref": "GoogleCloudDataplexV1DataScanEventPostScanActionsResult",
+                    "description": "The result of post scan actions."
+                },
                 "scope": {
                     "description": "The scope of the data scan (e.g. full, incremental).",
                     "enum": [
@@ -5831,6 +5980,10 @@
             "description": "Applied configs for data profile type data scan job.",
             "id": "GoogleCloudDataplexV1DataScanEventDataProfileAppliedConfigs",
             "properties": {
+                "columnFilterApplied": {
+                    "description": "Boolean indicating whether a column filter was applied in the DataScan job.",
+                    "type": "boolean"
+                },
                 "rowFilterApplied": {
                     "description": "Boolean indicating whether a row filter was applied in the DataScan job.",
                     "type": "boolean"
@@ -5894,6 +6047,44 @@
             },
             "type": "object"
         },
+        "GoogleCloudDataplexV1DataScanEventPostScanActionsResult": {
+            "description": "Post scan actions result for data scan job.",
+            "id": "GoogleCloudDataplexV1DataScanEventPostScanActionsResult",
+            "properties": {
+                "bigqueryExportResult": {
+                    "$ref": "GoogleCloudDataplexV1DataScanEventPostScanActionsResultBigQueryExportResult",
+                    "description": "The result of BigQuery export post scan action."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1DataScanEventPostScanActionsResultBigQueryExportResult": {
+            "description": "The result of BigQuery export post scan action.",
+            "id": "GoogleCloudDataplexV1DataScanEventPostScanActionsResultBigQueryExportResult",
+            "properties": {
+                "message": {
+                    "description": "Additional information about the BigQuery exporting.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Execution state for the BigQuery exporting.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "SUCCEEDED",
+                        "FAILED",
+                        "SKIPPED"
+                    ],
+                    "enumDescriptions": [
+                        "The exporting state is unspecified.",
+                        "The exporting completed successfully.",
+                        "The exporting is no longer running due to an error.",
+                        "The exporting is skipped due to no valid scan result to export (usually caused by scan failed)."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDataplexV1DataScanExecutionSpec": {
             "description": "DataScan execution settings.",
             "id": "GoogleCloudDataplexV1DataScanExecutionSpec",
@@ -6587,6 +6778,19 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "executionSpec": {
+                    "$ref": "GoogleCloudDataplexV1TaskExecutionSpec",
+                    "description": "Output only. Spec related to how a task is executed.",
+                    "readOnly": true
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Output only. User-defined labels for the task.",
+                    "readOnly": true,
+                    "type": "object"
+                },
                 "message": {
                     "description": "Output only. Additional information about the current state.",
                     "readOnly": true,
@@ -6650,6 +6854,21 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "trigger": {
+                    "description": "Output only. Job execution trigger.",
+                    "enum": [
+                        "TRIGGER_UNSPECIFIED",
+                        "TASK_CONFIG",
+                        "RUN_REQUEST"
+                    ],
+                    "enumDescriptions": [
+                        "The trigger is unspecified.",
+                        "The job was triggered by Dataplex based on trigger spec from task definition.",
+                        "The job was triggered by the explicit call of Task API."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "uid": {
                     "description": "Output only. System generated globally unique ID for the job.",
                     "readOnly": true,
@@ -6667,6 +6886,20 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "executionTrigger": {
+                    "description": "Job execution trigger.",
+                    "enum": [
+                        "EXECUTION_TRIGGER_UNSPECIFIED",
+                        "TASK_CONFIG",
+                        "RUN_REQUEST"
+                    ],
+                    "enumDescriptions": [
+                        "The job execution trigger is unspecified.",
+                        "The job was triggered by Dataplex based on trigger spec from task definition.",
+                        "The job was triggered by the explicit call of Task API."
+                    ],
+                    "type": "string"
+                },
                 "jobId": {
                     "description": "The unique id identifying the job.",
                     "type": "string"
@@ -7315,7 +7548,22 @@
         },
         "GoogleCloudDataplexV1RunTaskRequest": {
             "id": "GoogleCloudDataplexV1RunTaskRequest",
-            "properties": {},
+            "properties": {
+                "args": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. Execution spec arguments. If the map is left empty, the task will run with existing execution spec args from task definition. If the map contains an entry with a new key, the same will be added to existing set of args. If the map contains an entry with an existing arg key in task definition, the task will run with new arg value for that entry. Clearing an existing arg will require arg value to be explicitly set to a hyphen \"-\". The arg value cannot be empty.",
+                    "type": "object"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. User-defined labels for the task. If the map is left empty, the task will run with existing labels from task definition. If the map contains an entry with a new key, the same will be added to existing set of labels. If the map contains an entry with an existing label key in task definition, the task will run with new label value for that entry. Clearing an existing label will require label value to be explicitly set to a hyphen \"-\". The label value cannot be empty.",
+                    "type": "object"
+                }
+            },
             "type": "object"
         },
         "GoogleCloudDataplexV1RunTaskResponse": {
@@ -8665,9 +8913,5 @@
             },
             "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 2080346..f92c5fe 100644
--- a/discovery/googleapis/dataproc__v1.json
+++ b/discovery/googleapis/dataproc__v1.json
@@ -24,6 +24,12 @@
     "name": "dataproc",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230630",
+    "rootUrl": "https://dataproc.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Dataproc API",
+    "version": "v1",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +107,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -2669,8 +2674,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://dataproc.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
             "description": "Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).",
@@ -3546,7 +3549,7 @@
             "id": "ExecutionConfig",
             "properties": {
                 "idleTtl": {
-                    "description": "Optional. The duration to keep the session alive while it's idling. Exceeding this threshold causes the session to terminate. This field cannot be set on a batch workload. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). Defaults to 4 hours if not set. If both ttl and idle_ttl are specified, the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceed, whichever occurs first.",
+                    "description": "Optional. The duration to keep the session alive while it's idling. Exceeding this threshold causes the session to terminate. This field cannot be set on a batch workload. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). Defaults to 4 hours if not set. If both ttl and idle_ttl are specified for an interactive session, the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceeded, whichever occurs first.",
                     "format": "google-duration",
                     "type": "string"
                 },
@@ -3578,7 +3581,7 @@
                     "type": "string"
                 },
                 "ttl": {
-                    "description": "Optional. The duration after which the workload will be terminated. When the workload exceeds this duration, it will be unconditionally terminated without waiting for ongoing work to finish. If ttl is not specified for a batch workload, the workload will be allowed to run until it exits naturally (or runs forever without exiting). If ttl is not specified for an interactive session, it defaults to 24h. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). If both ttl and idle_ttl are specified (for an interactive session), the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceeded, whichever occurs first.",
+                    "description": "Optional. The duration after which the workload will be terminated. When the workload exceeds this duration, it will be unconditionally terminated without waiting for ongoing work to finish. If ttl is not specified for a batch workload, the workload will be allowed to run until it exits naturally (or runs forever without exiting). If ttl is not specified for an interactive session, it defaults to 24h. If ttl is not specified for a batch that uses 2.1+ runtime version, it defaults to 4h. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). If both ttl and idle_ttl are specified (for an interactive session), the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceeded, whichever occurs first.",
                     "format": "google-duration",
                     "type": "string"
                 }
@@ -4567,10 +4570,11 @@
             "id": "ListBatchesResponse",
             "properties": {
                 "batches": {
-                    "description": "The batches from the specified collection.",
+                    "description": "Output only. The batches from the specified collection.",
                     "items": {
                         "$ref": "Batch"
                     },
+                    "readOnly": true,
                     "type": "array"
                 },
                 "nextPageToken": {
@@ -6481,8 +6485,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Dataproc API",
-    "version": "v1"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/datastore__v1.json b/discovery/googleapis/datastore__v1.json
index 3d75d71..365a015 100644
--- a/discovery/googleapis/datastore__v1.json
+++ b/discovery/googleapis/datastore__v1.json
@@ -26,6 +26,13 @@
     "name": "datastore",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230708",
+    "rootUrl": "https://datastore.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Datastore API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -103,7 +110,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "methods": {
@@ -652,8 +658,6 @@
             }
         }
     },
-    "revision": "20230508",
-    "rootUrl": "https://datastore.googleapis.com/",
     "schemas": {
         "Aggregation": {
             "description": "Defines an aggregation that produces a single result.",
@@ -2482,9 +2486,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Datastore API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/datastream__v1.json b/discovery/googleapis/datastream__v1.json
index 02f5165..24fc6b5 100644
--- a/discovery/googleapis/datastream__v1.json
+++ b/discovery/googleapis/datastream__v1.json
@@ -24,6 +24,13 @@
     "name": "datastream",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230620",
+    "rootUrl": "https://datastream.googleapis.com/",
+    "servicePath": "",
+    "title": "Datastream API",
+    "version": "v1",
+    "version_module": true,
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -101,7 +108,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
@@ -1022,6 +1028,17 @@
                                         "name"
                                     ],
                                     "parameters": {
+                                        "cdcStrategy.specificStartPosition.mysqlLogPosition.logFile": {
+                                            "description": "The binary log file name.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "cdcStrategy.specificStartPosition.mysqlLogPosition.logPosition": {
+                                            "description": "The position within the binary log file. Default is head of file.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
                                         "force": {
                                             "description": "Optional. Update the stream without validating it.",
                                             "location": "query",
@@ -1220,8 +1237,6 @@
             }
         }
     },
-    "revision": "20230425",
-    "rootUrl": "https://datastream.googleapis.com/",
     "schemas": {
         "AvroFileFormat": {
             "description": "AVRO file format configuration.",
@@ -1273,7 +1288,7 @@
                     "type": "string"
                 },
                 "state": {
-                    "description": "Backfill job state.",
+                    "description": "Output only. Backfill job state.",
                     "enum": [
                         "STATE_UNSPECIFIED",
                         "NOT_STARTED",
@@ -1294,6 +1309,7 @@
                         "Backfill completed successfully.",
                         "Backfill job failed since the table structure is currently unsupported for backfill."
                     ],
+                    "readOnly": true,
                     "type": "string"
                 },
                 "trigger": {
@@ -2620,7 +2636,7 @@
             "id": "SingleTargetDataset",
             "properties": {
                 "datasetId": {
-                    "description": "The dataset ID of the target dataset.",
+                    "description": "The dataset ID of the target dataset. DatasetIds allowed characters: https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#datasetreference.",
                     "type": "string"
                 }
             },
@@ -2905,7 +2921,7 @@
                     "type": "array"
                 },
                 "state": {
-                    "description": "Validation execution status.",
+                    "description": "Output only. Validation execution status.",
                     "enum": [
                         "STATE_UNSPECIFIED",
                         "NOT_EXECUTED",
@@ -2918,6 +2934,7 @@
                         "Validation failed.",
                         "Validation passed."
                     ],
+                    "readOnly": true,
                     "type": "string"
                 }
             },
@@ -2988,9 +3005,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Datastream API",
-    "version": "v1",
-    "version_module": true
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/deploymentmanager__v2.json b/discovery/googleapis/deploymentmanager__v2.json
index 9f9bd28..18b9c5d 100644
--- a/discovery/googleapis/deploymentmanager__v2.json
+++ b/discovery/googleapis/deploymentmanager__v2.json
@@ -33,6 +33,12 @@
     "name": "deploymentmanager",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230608",
+    "rootUrl": "https://deploymentmanager.googleapis.com/",
+    "servicePath": "",
+    "title": "Cloud Deployment Manager V2 API",
+    "version": "v2",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -110,7 +116,6 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
         "deployments": {
             "methods": {
@@ -987,8 +992,6 @@
             }
         }
     },
-    "revision": "20230515",
-    "rootUrl": "https://deploymentmanager.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.",
@@ -1510,7 +1513,8 @@
                                     "PARTIAL_SUCCESS",
                                     "LARGE_DEPLOYMENT_WARNING",
                                     "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE",
-                                    "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB"
+                                    "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
+                                    "LIST_OVERHEAD_QUOTA_EXCEED"
                                 ],
                                 "enumDescriptions": [
                                     "A link to a deprecated resource was created.",
@@ -1539,7 +1543,8 @@
                                     "Success is reported, but some results may be missing due to errors",
                                     "When deploying a deployment with a exceedingly large number of resources",
                                     "The route's nextHopInstance URL refers to an instance that does not have an ipv6 interface on the same network as the route.",
-                                    "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2."
+                                    "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
+                                    "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter."
                                 ],
                                 "type": "string"
                             },
@@ -1705,7 +1710,8 @@
                                     "PARTIAL_SUCCESS",
                                     "LARGE_DEPLOYMENT_WARNING",
                                     "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE",
-                                    "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB"
+                                    "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
+                                    "LIST_OVERHEAD_QUOTA_EXCEED"
                                 ],
                                 "enumDescriptions": [
                                     "A link to a deprecated resource was created.",
@@ -1734,7 +1740,8 @@
                                     "Success is reported, but some results may be missing due to errors",
                                     "When deploying a deployment with a exceedingly large number of resources",
                                     "The route's nextHopInstance URL refers to an instance that does not have an ipv6 interface on the same network as the route.",
-                                    "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2."
+                                    "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
+                                    "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter."
                                 ],
                                 "type": "string"
                             },
@@ -1895,7 +1902,8 @@
                                     "PARTIAL_SUCCESS",
                                     "LARGE_DEPLOYMENT_WARNING",
                                     "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE",
-                                    "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB"
+                                    "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB",
+                                    "LIST_OVERHEAD_QUOTA_EXCEED"
                                 ],
                                 "enumDescriptions": [
                                     "A link to a deprecated resource was created.",
@@ -1924,7 +1932,8 @@
                                     "Success is reported, but some results may be missing due to errors",
                                     "When deploying a deployment with a exceedingly large number of resources",
                                     "The route's nextHopInstance URL refers to an instance that does not have an ipv6 interface on the same network as the route.",
-                                    "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2."
+                                    "A WEIGHTED_MAGLEV backend service is associated with a health check that is not of type HTTP/HTTPS/HTTP2.",
+                                    "Resource can't be retrieved due to list overhead quota exceed which captures the amount of resources filtered out by user-defined list filter."
                                 ],
                                 "type": "string"
                             },
@@ -2063,8 +2072,5 @@
             },
             "type": "object"
         }
-    },
-    "servicePath": "",
-    "title": "Cloud Deployment Manager V2 API",
-    "version": "v2"
-}
\ No newline at end of file
+    }
+}
diff --git a/discovery/googleapis/dfareporting__v3.5.json b/discovery/googleapis/dfareporting__v3.5.json
index 02ccddc..3002dec 100644
--- a/discovery/googleapis/dfareporting__v3.5.json
+++ b/discovery/googleapis/dfareporting__v3.5.json
@@ -2,12 +2,6 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/ddmconversions": {
-                    "description": "Manage DoubleClick Digital Marketing conversions"
-                },
-                "https://www.googleapis.com/auth/dfareporting": {
-                    "description": "View and manage DoubleClick for Advertisers reports"
-                },
                 "https://www.googleapis.com/auth/dfatrafficking": {
                     "description": "View and manage your DoubleClick Campaign Manager's (DCM) display ad campaigns"
                 }
@@ -30,6 +24,12 @@
     "name": "dfareporting",
     "ownerDomain": "google.com",
     "ownerName": "Google",
+    "protocol": "rest",
+    "revision": "20230523",
+    "rootUrl": "https://dfareporting.googleapis.com/",
+    "servicePath": "dfareporting/v3.5/",
+    "title": "Campaign Manager 360 API",
+    "version": "v3.5",
     "parameters": {
         "$.xgafv": {
             "description": "V1 error format.",
@@ -107,2754 +107,14 @@
             "type": "string"
         }
     },
-    "protocol": "rest",
     "resources": {
-        "accountActiveAdSummaries": {
+        "media": {
             "methods": {
-                "get": {
-                    "description": "Gets the account's active ad summary by account ID.",
-                    "flatPath": "userprofiles/{profileId}/accountActiveAdSummaries/{summaryAccountId}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accountActiveAdSummaries.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "summaryAccountId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "summaryAccountId": {
-                            "description": "Account ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountActiveAdSummaries/{summaryAccountId}",
-                    "response": {
-                        "$ref": "AccountActiveAdSummary"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "accountPermissionGroups": {
-            "methods": {
-                "get": {
-                    "description": "Gets one account permission group by ID.",
-                    "flatPath": "userprofiles/{profileId}/accountPermissionGroups/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accountPermissionGroups.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Account permission group ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountPermissionGroups/{id}",
-                    "response": {
-                        "$ref": "AccountPermissionGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves the list of account permission groups.",
-                    "flatPath": "userprofiles/{profileId}/accountPermissionGroups",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accountPermissionGroups.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountPermissionGroups",
-                    "response": {
-                        "$ref": "AccountPermissionGroupsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "accountPermissions": {
-            "methods": {
-                "get": {
-                    "description": "Gets one account permission by ID.",
-                    "flatPath": "userprofiles/{profileId}/accountPermissions/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accountPermissions.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Account permission ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountPermissions/{id}",
-                    "response": {
-                        "$ref": "AccountPermission"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves the list of account permissions.",
-                    "flatPath": "userprofiles/{profileId}/accountPermissions",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accountPermissions.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountPermissions",
-                    "response": {
-                        "$ref": "AccountPermissionsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "accountUserProfiles": {
-            "methods": {
-                "get": {
-                    "description": "Gets one account user profile by ID.",
-                    "flatPath": "userprofiles/{profileId}/accountUserProfiles/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accountUserProfiles.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "User profile ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountUserProfiles/{id}",
-                    "response": {
-                        "$ref": "AccountUserProfile"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new account user profile.",
-                    "flatPath": "userprofiles/{profileId}/accountUserProfiles",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.accountUserProfiles.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountUserProfiles",
-                    "request": {
-                        "$ref": "AccountUserProfile"
-                    },
-                    "response": {
-                        "$ref": "AccountUserProfile"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of account user profiles, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/accountUserProfiles",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accountUserProfiles.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "active": {
-                            "description": "Select only active user profiles.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "ids": {
-                            "description": "Select only user profiles with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, \"user profile*2015\" will return objects with names like \"user profile June 2015\", \"user profile April 2015\", or simply \"user profile 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"user profile\" will match objects with name \"my user profile\", \"user profile 2015\", or simply \"user profile\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "subaccountId": {
-                            "description": "Select only user profiles with the specified subaccount ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "userRoleId": {
-                            "description": "Select only user profiles with the specified user role ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountUserProfiles",
-                    "response": {
-                        "$ref": "AccountUserProfilesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing account user profile. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/accountUserProfiles",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.accountUserProfiles.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "AccountUserProfile ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountUserProfiles",
-                    "request": {
-                        "$ref": "AccountUserProfile"
-                    },
-                    "response": {
-                        "$ref": "AccountUserProfile"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing account user profile.",
-                    "flatPath": "userprofiles/{profileId}/accountUserProfiles",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.accountUserProfiles.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accountUserProfiles",
-                    "request": {
-                        "$ref": "AccountUserProfile"
-                    },
-                    "response": {
-                        "$ref": "AccountUserProfile"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "accounts": {
-            "methods": {
-                "get": {
-                    "description": "Gets one account by ID.",
-                    "flatPath": "userprofiles/{profileId}/accounts/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accounts.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Account ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accounts/{id}",
-                    "response": {
-                        "$ref": "Account"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves the list of accounts, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/accounts",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.accounts.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "active": {
-                            "description": "Select only active accounts. Don't set this field to select both active and non-active accounts.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "ids": {
-                            "description": "Select only accounts with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"account*2015\" will return objects with names like \"account June 2015\", \"account April 2015\", or simply \"account 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"account\" will match objects with name \"my account\", \"account 2015\", or simply \"account\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accounts",
-                    "response": {
-                        "$ref": "AccountsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing account. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/accounts",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.accounts.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Account ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accounts",
-                    "request": {
-                        "$ref": "Account"
-                    },
-                    "response": {
-                        "$ref": "Account"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing account.",
-                    "flatPath": "userprofiles/{profileId}/accounts",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.accounts.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/accounts",
-                    "request": {
-                        "$ref": "Account"
-                    },
-                    "response": {
-                        "$ref": "Account"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "ads": {
-            "methods": {
-                "get": {
-                    "description": "Gets one ad by ID.",
-                    "flatPath": "userprofiles/{profileId}/ads/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.ads.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Ad ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/ads/{id}",
-                    "response": {
-                        "$ref": "Ad"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new ad.",
-                    "flatPath": "userprofiles/{profileId}/ads",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.ads.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/ads",
-                    "request": {
-                        "$ref": "Ad"
-                    },
-                    "response": {
-                        "$ref": "Ad"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of ads, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/ads",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.ads.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "active": {
-                            "description": "Select only active ads.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "advertiserId": {
-                            "description": "Select only ads with this advertiser ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "archived": {
-                            "description": "Select only archived ads.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "audienceSegmentIds": {
-                            "description": "Select only ads with these audience segment IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "campaignIds": {
-                            "description": "Select only ads with these campaign IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "compatibility": {
-                            "description": "Select default ads with the specified compatibility. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering an in-stream video ads developed with the VAST standard.",
-                            "enum": [
-                                "DISPLAY",
-                                "DISPLAY_INTERSTITIAL",
-                                "APP",
-                                "APP_INTERSTITIAL",
-                                "IN_STREAM_VIDEO",
-                                "IN_STREAM_AUDIO"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "creativeIds": {
-                            "description": "Select only ads with these creative IDs assigned.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "creativeOptimizationConfigurationIds": {
-                            "description": "Select only ads with these creative optimization configuration IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "dynamicClickTracker": {
-                            "description": "Select only dynamic click trackers. Applicable when type is AD_SERVING_CLICK_TRACKER. If true, select dynamic click trackers. If false, select static click trackers. Leave unset to select both.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "ids": {
-                            "description": "Select only ads with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "landingPageIds": {
-                            "description": "Select only ads with these landing page IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "overriddenEventTagId": {
-                            "description": "Select only ads with this event tag override ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "placementIds": {
-                            "description": "Select only ads with these placement IDs assigned.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "remarketingListIds": {
-                            "description": "Select only ads whose list targeting expression use these remarketing list IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"ad*2015\" will return objects with names like \"ad June 2015\", \"ad April 2015\", or simply \"ad 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"ad\" will match objects with name \"my ad\", \"ad 2015\", or simply \"ad\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sizeIds": {
-                            "description": "Select only ads with these size IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sslCompliant": {
-                            "description": "Select only ads that are SSL-compliant.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "sslRequired": {
-                            "description": "Select only ads that require SSL.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "type": {
-                            "description": "Select only ads with these types.",
-                            "enum": [
-                                "AD_SERVING_STANDARD_AD",
-                                "AD_SERVING_DEFAULT_AD",
-                                "AD_SERVING_CLICK_TRACKER",
-                                "AD_SERVING_TRACKING",
-                                "AD_SERVING_BRAND_SAFE_AD"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/ads",
-                    "response": {
-                        "$ref": "AdsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing ad. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/ads",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.ads.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Ad ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/ads",
-                    "request": {
-                        "$ref": "Ad"
-                    },
-                    "response": {
-                        "$ref": "Ad"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing ad.",
-                    "flatPath": "userprofiles/{profileId}/ads",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.ads.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/ads",
-                    "request": {
-                        "$ref": "Ad"
-                    },
-                    "response": {
-                        "$ref": "Ad"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "advertiserGroups": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an existing advertiser group.",
-                    "flatPath": "userprofiles/{profileId}/advertiserGroups/{id}",
-                    "httpMethod": "DELETE",
-                    "id": "dfareporting.advertiserGroups.delete",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Advertiser group ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserGroups/{id}",
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "get": {
-                    "description": "Gets one advertiser group by ID.",
-                    "flatPath": "userprofiles/{profileId}/advertiserGroups/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.advertiserGroups.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Advertiser group ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserGroups/{id}",
-                    "response": {
-                        "$ref": "AdvertiserGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new advertiser group.",
-                    "flatPath": "userprofiles/{profileId}/advertiserGroups",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.advertiserGroups.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserGroups",
-                    "request": {
-                        "$ref": "AdvertiserGroup"
-                    },
-                    "response": {
-                        "$ref": "AdvertiserGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of advertiser groups, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/advertiserGroups",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.advertiserGroups.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "ids": {
-                            "description": "Select only advertiser groups with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser group June 2015\", \"advertiser group April 2015\", or simply \"advertiser group 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"advertisergroup\" will match objects with name \"my advertisergroup\", \"advertisergroup 2015\", or simply \"advertisergroup\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserGroups",
-                    "response": {
-                        "$ref": "AdvertiserGroupsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing advertiser group. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/advertiserGroups",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.advertiserGroups.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "AdvertiserGroup ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserGroups",
-                    "request": {
-                        "$ref": "AdvertiserGroup"
-                    },
-                    "response": {
-                        "$ref": "AdvertiserGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing advertiser group.",
-                    "flatPath": "userprofiles/{profileId}/advertiserGroups",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.advertiserGroups.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserGroups",
-                    "request": {
-                        "$ref": "AdvertiserGroup"
-                    },
-                    "response": {
-                        "$ref": "AdvertiserGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "advertiserLandingPages": {
-            "methods": {
-                "get": {
-                    "description": "Gets one landing page by ID.",
-                    "flatPath": "userprofiles/{profileId}/advertiserLandingPages/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.advertiserLandingPages.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Landing page ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserLandingPages/{id}",
-                    "response": {
-                        "$ref": "LandingPage"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new landing page.",
-                    "flatPath": "userprofiles/{profileId}/advertiserLandingPages",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.advertiserLandingPages.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserLandingPages",
-                    "request": {
-                        "$ref": "LandingPage"
-                    },
-                    "response": {
-                        "$ref": "LandingPage"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of landing pages.",
-                    "flatPath": "userprofiles/{profileId}/advertiserLandingPages",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.advertiserLandingPages.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserIds": {
-                            "description": "Select only landing pages that belong to these advertisers.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "archived": {
-                            "description": "Select only archived landing pages. Don't set this field to select both archived and non-archived landing pages.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "campaignIds": {
-                            "description": "Select only landing pages that are associated with these campaigns.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only landing pages with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for landing pages by name or ID. Wildcards (*) are allowed. For example, \"landingpage*2017\" will return landing pages with names like \"landingpage July 2017\", \"landingpage March 2017\", or simply \"landingpage 2017\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"landingpage\" will match campaigns with name \"my landingpage\", \"landingpage 2015\", or simply \"landingpage\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "subaccountId": {
-                            "description": "Select only landing pages that belong to this subaccount.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserLandingPages",
-                    "response": {
-                        "$ref": "AdvertiserLandingPagesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing advertiser landing page. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/advertiserLandingPages",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.advertiserLandingPages.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "LandingPage ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserLandingPages",
-                    "request": {
-                        "$ref": "LandingPage"
-                    },
-                    "response": {
-                        "$ref": "LandingPage"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing landing page.",
-                    "flatPath": "userprofiles/{profileId}/advertiserLandingPages",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.advertiserLandingPages.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertiserLandingPages",
-                    "request": {
-                        "$ref": "LandingPage"
-                    },
-                    "response": {
-                        "$ref": "LandingPage"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "advertisers": {
-            "methods": {
-                "get": {
-                    "description": "Gets one advertiser by ID.",
-                    "flatPath": "userprofiles/{profileId}/advertisers/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.advertisers.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Advertiser ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertisers/{id}",
-                    "response": {
-                        "$ref": "Advertiser"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new advertiser.",
-                    "flatPath": "userprofiles/{profileId}/advertisers",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.advertisers.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertisers",
-                    "request": {
-                        "$ref": "Advertiser"
-                    },
-                    "response": {
-                        "$ref": "Advertiser"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of advertisers, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/advertisers",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.advertisers.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserGroupIds": {
-                            "description": "Select only advertisers with these advertiser group IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "floodlightConfigurationIds": {
-                            "description": "Select only advertisers with these floodlight configuration IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only advertisers with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "includeAdvertisersWithoutGroupsOnly": {
-                            "description": "Select only advertisers which do not belong to any advertiser group.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "onlyParent": {
-                            "description": "Select only advertisers which use another advertiser's floodlight configuration.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser June 2015\", \"advertiser April 2015\", or simply \"advertiser 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"advertiser\" will match objects with name \"my advertiser\", \"advertiser 2015\", or simply \"advertiser\" .",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "status": {
-                            "description": "Select only advertisers with the specified status.",
-                            "enum": [
-                                "APPROVED",
-                                "ON_HOLD"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "subaccountId": {
-                            "description": "Select only advertisers with these subaccount IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertisers",
-                    "response": {
-                        "$ref": "AdvertisersListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing advertiser. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/advertisers",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.advertisers.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Advertiser ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertisers",
-                    "request": {
-                        "$ref": "Advertiser"
-                    },
-                    "response": {
-                        "$ref": "Advertiser"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing advertiser.",
-                    "flatPath": "userprofiles/{profileId}/advertisers",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.advertisers.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/advertisers",
-                    "request": {
-                        "$ref": "Advertiser"
-                    },
-                    "response": {
-                        "$ref": "Advertiser"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "browsers": {
-            "methods": {
-                "list": {
-                    "description": "Retrieves a list of browsers.",
-                    "flatPath": "userprofiles/{profileId}/browsers",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.browsers.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/browsers",
-                    "response": {
-                        "$ref": "BrowsersListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "campaignCreativeAssociations": {
-            "methods": {
-                "insert": {
-                    "description": "Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.",
-                    "flatPath": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.campaignCreativeAssociations.insert",
-                    "parameterOrder": [
-                        "profileId",
-                        "campaignId"
-                    ],
-                    "parameters": {
-                        "campaignId": {
-                            "description": "Campaign ID in this association.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
-                    "request": {
-                        "$ref": "CampaignCreativeAssociation"
-                    },
-                    "response": {
-                        "$ref": "CampaignCreativeAssociation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.campaignCreativeAssociations.list",
-                    "parameterOrder": [
-                        "profileId",
-                        "campaignId"
-                    ],
-                    "parameters": {
-                        "campaignId": {
-                            "description": "Campaign ID in this association.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
-                    "response": {
-                        "$ref": "CampaignCreativeAssociationsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "campaigns": {
-            "methods": {
-                "get": {
-                    "description": "Gets one campaign by ID.",
-                    "flatPath": "userprofiles/{profileId}/campaigns/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.campaigns.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Campaign ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/campaigns/{id}",
-                    "response": {
-                        "$ref": "Campaign"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new campaign.",
-                    "flatPath": "userprofiles/{profileId}/campaigns",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.campaigns.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/campaigns",
-                    "request": {
-                        "$ref": "Campaign"
-                    },
-                    "response": {
-                        "$ref": "Campaign"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of campaigns, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/campaigns",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.campaigns.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserGroupIds": {
-                            "description": "Select only campaigns whose advertisers belong to these advertiser groups.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "advertiserIds": {
-                            "description": "Select only campaigns that belong to these advertisers.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "archived": {
-                            "description": "Select only archived campaigns. Don't set this field to select both archived and non-archived campaigns.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "atLeastOneOptimizationActivity": {
-                            "description": "Select only campaigns that have at least one optimization activity.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "excludedIds": {
-                            "description": "Exclude campaigns with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only campaigns with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "overriddenEventTagId": {
-                            "description": "Select only campaigns that have overridden this event tag ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for campaigns by name or ID. Wildcards (*) are allowed. For example, \"campaign*2015\" will return campaigns with names like \"campaign June 2015\", \"campaign April 2015\", or simply \"campaign 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"campaign\" will match campaigns with name \"my campaign\", \"campaign 2015\", or simply \"campaign\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "subaccountId": {
-                            "description": "Select only campaigns that belong to this subaccount.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/campaigns",
-                    "response": {
-                        "$ref": "CampaignsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing campaign. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/campaigns",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.campaigns.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Campaign ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/campaigns",
-                    "request": {
-                        "$ref": "Campaign"
-                    },
-                    "response": {
-                        "$ref": "Campaign"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing campaign.",
-                    "flatPath": "userprofiles/{profileId}/campaigns",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.campaigns.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/campaigns",
-                    "request": {
-                        "$ref": "Campaign"
-                    },
-                    "response": {
-                        "$ref": "Campaign"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "changeLogs": {
-            "methods": {
-                "get": {
-                    "description": "Gets one change log by ID.",
-                    "flatPath": "userprofiles/{profileId}/changeLogs/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.changeLogs.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Change log ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/changeLogs/{id}",
-                    "response": {
-                        "$ref": "ChangeLog"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of change logs. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/changeLogs",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.changeLogs.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "action": {
-                            "description": "Select only change logs with the specified action.",
-                            "enum": [
-                                "ACTION_CREATE",
-                                "ACTION_UPDATE",
-                                "ACTION_DELETE",
-                                "ACTION_ENABLE",
-                                "ACTION_DISABLE",
-                                "ACTION_ADD",
-                                "ACTION_REMOVE",
-                                "ACTION_MARK_AS_DEFAULT",
-                                "ACTION_ASSOCIATE",
-                                "ACTION_ASSIGN",
-                                "ACTION_UNASSIGN",
-                                "ACTION_SEND",
-                                "ACTION_LINK",
-                                "ACTION_UNLINK",
-                                "ACTION_PUSH",
-                                "ACTION_EMAIL_TAGS",
-                                "ACTION_SHARE"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only change logs with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxChangeTime": {
-                            "description": "Select only change logs whose change time is before the specified maxChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "minChangeTime": {
-                            "description": "Select only change logs whose change time is after the specified minChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "objectIds": {
-                            "description": "Select only change logs with these object IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "objectType": {
-                            "description": "Select only change logs with the specified object type.",
-                            "enum": [
-                                "OBJECT_ADVERTISER",
-                                "OBJECT_FLOODLIGHT_CONFIGURATION",
-                                "OBJECT_AD",
-                                "OBJECT_FLOODLIGHT_ACTVITY",
-                                "OBJECT_CAMPAIGN",
-                                "OBJECT_FLOODLIGHT_ACTIVITY_GROUP",
-                                "OBJECT_CREATIVE",
-                                "OBJECT_PLACEMENT",
-                                "OBJECT_DFA_SITE",
-                                "OBJECT_USER_ROLE",
-                                "OBJECT_USER_PROFILE",
-                                "OBJECT_ADVERTISER_GROUP",
-                                "OBJECT_ACCOUNT",
-                                "OBJECT_SUBACCOUNT",
-                                "OBJECT_RICHMEDIA_CREATIVE",
-                                "OBJECT_INSTREAM_CREATIVE",
-                                "OBJECT_MEDIA_ORDER",
-                                "OBJECT_CONTENT_CATEGORY",
-                                "OBJECT_PLACEMENT_STRATEGY",
-                                "OBJECT_SD_SITE",
-                                "OBJECT_SIZE",
-                                "OBJECT_CREATIVE_GROUP",
-                                "OBJECT_CREATIVE_ASSET",
-                                "OBJECT_USER_PROFILE_FILTER",
-                                "OBJECT_LANDING_PAGE",
-                                "OBJECT_CREATIVE_FIELD",
-                                "OBJECT_REMARKETING_LIST",
-                                "OBJECT_PROVIDED_LIST_CLIENT",
-                                "OBJECT_EVENT_TAG",
-                                "OBJECT_CREATIVE_BUNDLE",
-                                "OBJECT_BILLING_ACCOUNT_GROUP",
-                                "OBJECT_BILLING_FEATURE",
-                                "OBJECT_RATE_CARD",
-                                "OBJECT_ACCOUNT_BILLING_FEATURE",
-                                "OBJECT_BILLING_MINIMUM_FEE",
-                                "OBJECT_BILLING_PROFILE",
-                                "OBJECT_PLAYSTORE_LINK",
-                                "OBJECT_TARGETING_TEMPLATE",
-                                "OBJECT_SEARCH_LIFT_STUDY",
-                                "OBJECT_FLOODLIGHT_DV360_LINK",
-                                "OBJECT_ADVERTISER_CUSTOMER_LINK"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Select only change logs whose object ID, user name, old or new values match the search string.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "userProfileIds": {
-                            "description": "Select only change logs with these user profile IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/changeLogs",
-                    "response": {
-                        "$ref": "ChangeLogsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "cities": {
-            "methods": {
-                "list": {
-                    "description": "Retrieves a list of cities, possibly filtered.",
-                    "flatPath": "userprofiles/{profileId}/cities",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.cities.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "countryDartIds": {
-                            "description": "Select only cities from these countries.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "dartIds": {
-                            "description": "Select only cities with these DART IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "namePrefix": {
-                            "description": "Select only cities with names starting with this prefix.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "regionDartIds": {
-                            "description": "Select only cities from these regions.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/cities",
-                    "response": {
-                        "$ref": "CitiesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "connectionTypes": {
-            "methods": {
-                "get": {
-                    "description": "Gets one connection type by ID.",
-                    "flatPath": "userprofiles/{profileId}/connectionTypes/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.connectionTypes.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Connection type ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/connectionTypes/{id}",
-                    "response": {
-                        "$ref": "ConnectionType"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of connection types.",
-                    "flatPath": "userprofiles/{profileId}/connectionTypes",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.connectionTypes.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/connectionTypes",
-                    "response": {
-                        "$ref": "ConnectionTypesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "contentCategories": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an existing content category.",
-                    "flatPath": "userprofiles/{profileId}/contentCategories/{id}",
-                    "httpMethod": "DELETE",
-                    "id": "dfareporting.contentCategories.delete",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Content category ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/contentCategories/{id}",
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "get": {
-                    "description": "Gets one content category by ID.",
-                    "flatPath": "userprofiles/{profileId}/contentCategories/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.contentCategories.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Content category ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/contentCategories/{id}",
-                    "response": {
-                        "$ref": "ContentCategory"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new content category.",
-                    "flatPath": "userprofiles/{profileId}/contentCategories",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.contentCategories.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/contentCategories",
-                    "request": {
-                        "$ref": "ContentCategory"
-                    },
-                    "response": {
-                        "$ref": "ContentCategory"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of content categories, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/contentCategories",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.contentCategories.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "ids": {
-                            "description": "Select only content categories with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"contentcategory*2015\" will return objects with names like \"contentcategory June 2015\", \"contentcategory April 2015\", or simply \"contentcategory 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"contentcategory\" will match objects with name \"my contentcategory\", \"contentcategory 2015\", or simply \"contentcategory\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/contentCategories",
-                    "response": {
-                        "$ref": "ContentCategoriesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing content category. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/contentCategories",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.contentCategories.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "ContentCategory ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/contentCategories",
-                    "request": {
-                        "$ref": "ContentCategory"
-                    },
-                    "response": {
-                        "$ref": "ContentCategory"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing content category.",
-                    "flatPath": "userprofiles/{profileId}/contentCategories",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.contentCategories.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/contentCategories",
-                    "request": {
-                        "$ref": "ContentCategory"
-                    },
-                    "response": {
-                        "$ref": "ContentCategory"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "conversions": {
-            "methods": {
-                "batchinsert": {
-                    "description": "Inserts conversions.",
-                    "flatPath": "userprofiles/{profileId}/conversions/batchinsert",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.conversions.batchinsert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/conversions/batchinsert",
-                    "request": {
-                        "$ref": "ConversionsBatchInsertRequest"
-                    },
-                    "response": {
-                        "$ref": "ConversionsBatchInsertResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/ddmconversions"
-                    ]
-                },
-                "batchupdate": {
-                    "description": "Updates existing conversions.",
-                    "flatPath": "userprofiles/{profileId}/conversions/batchupdate",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.conversions.batchupdate",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/conversions/batchupdate",
-                    "request": {
-                        "$ref": "ConversionsBatchUpdateRequest"
-                    },
-                    "response": {
-                        "$ref": "ConversionsBatchUpdateResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/ddmconversions"
-                    ]
-                }
-            }
-        },
-        "countries": {
-            "methods": {
-                "get": {
-                    "description": "Gets one country by ID.",
-                    "flatPath": "userprofiles/{profileId}/countries/{dartId}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.countries.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "dartId"
-                    ],
-                    "parameters": {
-                        "dartId": {
-                            "description": "Country DART ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/countries/{dartId}",
-                    "response": {
-                        "$ref": "Country"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of countries.",
-                    "flatPath": "userprofiles/{profileId}/countries",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.countries.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/countries",
-                    "response": {
-                        "$ref": "CountriesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "creativeAssets": {
-            "methods": {
-                "insert": {
+                "upload": {
                     "description": "Inserts a new creative asset.",
-                    "flatPath": "userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets",
+                    "flatPath": "userprofiles/{userprofilesId}/creativeAssets/{creativeAssetsId}/creativeAssets",
                     "httpMethod": "POST",
-                    "id": "dfareporting.creativeAssets.insert",
+                    "id": "dfareporting.media.upload",
                     "mediaUpload": {
                         "accept": [
                             "*/*"
@@ -2863,7 +123,7 @@
                         "protocols": {
                             "simple": {
                                 "multipart": true,
-                                "path": "/upload/dfareporting/v3.5/userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets"
+                                "path": "/upload/dfareporting/v3.5/userprofiles/{+profileId}/creativeAssets/{+advertiserId}/creativeAssets"
                             }
                         }
                     },
@@ -2876,6 +136,7 @@
                             "description": "Advertiser ID of this creative. This is a required field.",
                             "format": "int64",
                             "location": "path",
+                            "pattern": "^[^/]+$",
                             "required": true,
                             "type": "string"
                         },
@@ -2883,11 +144,12 @@
                             "description": "User profile ID associated with this request.",
                             "format": "int64",
                             "location": "path",
+                            "pattern": "^[^/]+$",
                             "required": true,
                             "type": "string"
                         }
                     },
-                    "path": "userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets",
+                    "path": "userprofiles/{+profileId}/creativeAssets/{+advertiserId}/creativeAssets",
                     "request": {
                         "$ref": "CreativeAssetMetadata"
                     },
@@ -2900,8204 +162,9 @@
                     "supportsMediaUpload": true
                 }
             }
-        },
-        "creativeFieldValues": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an existing creative field value.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
-                    "httpMethod": "DELETE",
-                    "id": "dfareporting.creativeFieldValues.delete",
-                    "parameterOrder": [
-                        "profileId",
-                        "creativeFieldId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "creativeFieldId": {
-                            "description": "Creative field ID for this creative field value.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "id": {
-                            "description": "Creative Field Value ID",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "get": {
-                    "description": "Gets one creative field value by ID.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creativeFieldValues.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "creativeFieldId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "creativeFieldId": {
-                            "description": "Creative field ID for this creative field value.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "id": {
-                            "description": "Creative Field Value ID",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
-                    "response": {
-                        "$ref": "CreativeFieldValue"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new creative field value.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.creativeFieldValues.insert",
-                    "parameterOrder": [
-                        "profileId",
-                        "creativeFieldId"
-                    ],
-                    "parameters": {
-                        "creativeFieldId": {
-                            "description": "Creative field ID for this creative field value.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "request": {
-                        "$ref": "CreativeFieldValue"
-                    },
-                    "response": {
-                        "$ref": "CreativeFieldValue"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of creative field values, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creativeFieldValues.list",
-                    "parameterOrder": [
-                        "profileId",
-                        "creativeFieldId"
-                    ],
-                    "parameters": {
-                        "creativeFieldId": {
-                            "description": "Creative field ID for this creative field value.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only creative field values with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for creative field values by their values. Wildcards (e.g. *) are not allowed.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "VALUE"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "response": {
-                        "$ref": "CreativeFieldValuesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing creative field value. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.creativeFieldValues.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "creativeFieldId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "creativeFieldId": {
-                            "description": "CreativeField ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "id": {
-                            "description": "CreativeFieldValue ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "request": {
-                        "$ref": "CreativeFieldValue"
-                    },
-                    "response": {
-                        "$ref": "CreativeFieldValue"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing creative field value.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.creativeFieldValues.update",
-                    "parameterOrder": [
-                        "profileId",
-                        "creativeFieldId"
-                    ],
-                    "parameters": {
-                        "creativeFieldId": {
-                            "description": "Creative field ID for this creative field value.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
-                    "request": {
-                        "$ref": "CreativeFieldValue"
-                    },
-                    "response": {
-                        "$ref": "CreativeFieldValue"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "creativeFields": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an existing creative field.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{id}",
-                    "httpMethod": "DELETE",
-                    "id": "dfareporting.creativeFields.delete",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Creative Field ID",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{id}",
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "get": {
-                    "description": "Gets one creative field by ID.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creativeFields.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Creative Field ID",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields/{id}",
-                    "response": {
-                        "$ref": "CreativeField"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new creative field.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.creativeFields.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields",
-                    "request": {
-                        "$ref": "CreativeField"
-                    },
-                    "response": {
-                        "$ref": "CreativeField"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of creative fields, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creativeFields.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserIds": {
-                            "description": "Select only creative fields that belong to these advertisers.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only creative fields with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for creative fields by name or ID. Wildcards (*) are allowed. For example, \"creativefield*2015\" will return creative fields with names like \"creativefield June 2015\", \"creativefield April 2015\", or simply \"creativefield 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativefield\" will match creative fields with the name \"my creativefield\", \"creativefield 2015\", or simply \"creativefield\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields",
-                    "response": {
-                        "$ref": "CreativeFieldsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing creative field. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.creativeFields.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "CreativeField ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields",
-                    "request": {
-                        "$ref": "CreativeField"
-                    },
-                    "response": {
-                        "$ref": "CreativeField"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing creative field.",
-                    "flatPath": "userprofiles/{profileId}/creativeFields",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.creativeFields.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeFields",
-                    "request": {
-                        "$ref": "CreativeField"
-                    },
-                    "response": {
-                        "$ref": "CreativeField"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "creativeGroups": {
-            "methods": {
-                "get": {
-                    "description": "Gets one creative group by ID.",
-                    "flatPath": "userprofiles/{profileId}/creativeGroups/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creativeGroups.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Creative group ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeGroups/{id}",
-                    "response": {
-                        "$ref": "CreativeGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new creative group.",
-                    "flatPath": "userprofiles/{profileId}/creativeGroups",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.creativeGroups.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeGroups",
-                    "request": {
-                        "$ref": "CreativeGroup"
-                    },
-                    "response": {
-                        "$ref": "CreativeGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of creative groups, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/creativeGroups",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creativeGroups.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserIds": {
-                            "description": "Select only creative groups that belong to these advertisers.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "groupNumber": {
-                            "description": "Select only creative groups that belong to this subgroup.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "2",
-                            "minimum": "1",
-                            "type": "integer"
-                        },
-                        "ids": {
-                            "description": "Select only creative groups with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for creative groups by name or ID. Wildcards (*) are allowed. For example, \"creativegroup*2015\" will return creative groups with names like \"creativegroup June 2015\", \"creativegroup April 2015\", or simply \"creativegroup 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativegroup\" will match creative groups with the name \"my creativegroup\", \"creativegroup 2015\", or simply \"creativegroup\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeGroups",
-                    "response": {
-                        "$ref": "CreativeGroupsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing creative group. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/creativeGroups",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.creativeGroups.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "CreativeGroup ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeGroups",
-                    "request": {
-                        "$ref": "CreativeGroup"
-                    },
-                    "response": {
-                        "$ref": "CreativeGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing creative group.",
-                    "flatPath": "userprofiles/{profileId}/creativeGroups",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.creativeGroups.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creativeGroups",
-                    "request": {
-                        "$ref": "CreativeGroup"
-                    },
-                    "response": {
-                        "$ref": "CreativeGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "creatives": {
-            "methods": {
-                "get": {
-                    "description": "Gets one creative by ID.",
-                    "flatPath": "userprofiles/{profileId}/creatives/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creatives.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Creative ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creatives/{id}",
-                    "response": {
-                        "$ref": "Creative"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new creative.",
-                    "flatPath": "userprofiles/{profileId}/creatives",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.creatives.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creatives",
-                    "request": {
-                        "$ref": "Creative"
-                    },
-                    "response": {
-                        "$ref": "Creative"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of creatives, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/creatives",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.creatives.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "active": {
-                            "description": "Select only active creatives. Leave blank to select active and inactive creatives.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "advertiserId": {
-                            "description": "Select only creatives with this advertiser ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "archived": {
-                            "description": "Select only archived creatives. Leave blank to select archived and unarchived creatives.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "campaignId": {
-                            "description": "Select only creatives with this campaign ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "companionCreativeIds": {
-                            "description": "Select only in-stream video creatives with these companion IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "creativeFieldIds": {
-                            "description": "Select only creatives with these creative field IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only creatives with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "renderingIds": {
-                            "description": "Select only creatives with these rendering IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"creative*2015\" will return objects with names like \"creative June 2015\", \"creative April 2015\", or simply \"creative 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"creative\" will match objects with name \"my creative\", \"creative 2015\", or simply \"creative\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sizeIds": {
-                            "description": "Select only creatives with these size IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "studioCreativeId": {
-                            "description": "Select only creatives corresponding to this Studio creative ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "types": {
-                            "description": "Select only creatives with these creative types.",
-                            "enum": [
-                                "IMAGE",
-                                "DISPLAY_REDIRECT",
-                                "CUSTOM_DISPLAY",
-                                "INTERNAL_REDIRECT",
-                                "CUSTOM_DISPLAY_INTERSTITIAL",
-                                "INTERSTITIAL_INTERNAL_REDIRECT",
-                                "TRACKING_TEXT",
-                                "RICH_MEDIA_DISPLAY_BANNER",
-                                "RICH_MEDIA_INPAGE_FLOATING",
-                                "RICH_MEDIA_IM_EXPAND",
-                                "RICH_MEDIA_DISPLAY_EXPANDING",
-                                "RICH_MEDIA_DISPLAY_INTERSTITIAL",
-                                "RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL",
-                                "RICH_MEDIA_MOBILE_IN_APP",
-                                "FLASH_INPAGE",
-                                "INSTREAM_VIDEO",
-                                "VPAID_LINEAR_VIDEO",
-                                "VPAID_NON_LINEAR_VIDEO",
-                                "INSTREAM_VIDEO_REDIRECT",
-                                "RICH_MEDIA_PEEL_DOWN",
-                                "HTML5_BANNER",
-                                "DISPLAY",
-                                "DISPLAY_IMAGE_GALLERY",
-                                "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
-                                "INSTREAM_AUDIO"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creatives",
-                    "response": {
-                        "$ref": "CreativesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing creative. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/creatives",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.creatives.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Creative ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creatives",
-                    "request": {
-                        "$ref": "Creative"
-                    },
-                    "response": {
-                        "$ref": "Creative"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing creative.",
-                    "flatPath": "userprofiles/{profileId}/creatives",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.creatives.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/creatives",
-                    "request": {
-                        "$ref": "Creative"
-                    },
-                    "response": {
-                        "$ref": "Creative"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "dimensionValues": {
-            "methods": {
-                "query": {
-                    "description": "Retrieves list of report dimension values for a list of filters.",
-                    "flatPath": "userprofiles/{profileId}/dimensionvalues/query",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.dimensionValues.query",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "maxResults": {
-                            "default": "100",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "100",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "The value of the nextToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "The Campaign Manager 360 user profile ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/dimensionvalues/query",
-                    "request": {
-                        "$ref": "DimensionValueRequest"
-                    },
-                    "response": {
-                        "$ref": "DimensionValueList"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfareporting"
-                    ]
-                }
-            }
-        },
-        "directorySites": {
-            "methods": {
-                "get": {
-                    "description": "Gets one directory site by ID.",
-                    "flatPath": "userprofiles/{profileId}/directorySites/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.directorySites.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Directory site ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/directorySites/{id}",
-                    "response": {
-                        "$ref": "DirectorySite"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new directory site.",
-                    "flatPath": "userprofiles/{profileId}/directorySites",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.directorySites.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/directorySites",
-                    "request": {
-                        "$ref": "DirectorySite"
-                    },
-                    "response": {
-                        "$ref": "DirectorySite"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of directory sites, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/directorySites",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.directorySites.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "acceptsInStreamVideoPlacements": {
-                            "description": "This search filter is no longer supported and will have no effect on the results returned.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "acceptsInterstitialPlacements": {
-                            "description": "This search filter is no longer supported and will have no effect on the results returned.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "acceptsPublisherPaidPlacements": {
-                            "description": "Select only directory sites that accept publisher paid placements. This field can be left blank.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "active": {
-                            "description": "Select only active directory sites. Leave blank to retrieve both active and inactive directory sites.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "dfpNetworkCode": {
-                            "description": "Select only directory sites with this Ad Manager network code.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only directory sites with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name, ID or URL. Wildcards (*) are allowed. For example, \"directory site*2015\" will return objects with names like \"directory site June 2015\", \"directory site April 2015\", or simply \"directory site 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"directory site\" will match objects with name \"my directory site\", \"directory site 2015\" or simply, \"directory site\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/directorySites",
-                    "response": {
-                        "$ref": "DirectorySitesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "dynamicTargetingKeys": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an existing dynamic targeting key.",
-                    "flatPath": "userprofiles/{profileId}/dynamicTargetingKeys/{objectId}",
-                    "httpMethod": "DELETE",
-                    "id": "dfareporting.dynamicTargetingKeys.delete",
-                    "parameterOrder": [
-                        "profileId",
-                        "objectId",
-                        "name",
-                        "objectType"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "Name of this dynamic targeting key. This is a required field. Must be less than 256 characters long and cannot contain commas. All characters are converted to lowercase.",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "objectId": {
-                            "description": "ID of the object of this dynamic targeting key. This is a required field.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "objectType": {
-                            "description": "Type of the object of this dynamic targeting key. This is a required field.",
-                            "enum": [
-                                "OBJECT_ADVERTISER",
-                                "OBJECT_AD",
-                                "OBJECT_CREATIVE",
-                                "OBJECT_PLACEMENT"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/dynamicTargetingKeys/{objectId}",
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new dynamic targeting key. Keys must be created at the advertiser level before being assigned to the advertiser's ads, creatives, or placements. There is a maximum of 1000 keys per advertiser, out of which a maximum of 20 keys can be assigned per ad, creative, or placement.",
-                    "flatPath": "userprofiles/{profileId}/dynamicTargetingKeys",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.dynamicTargetingKeys.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/dynamicTargetingKeys",
-                    "request": {
-                        "$ref": "DynamicTargetingKey"
-                    },
-                    "response": {
-                        "$ref": "DynamicTargetingKey"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of dynamic targeting keys.",
-                    "flatPath": "userprofiles/{profileId}/dynamicTargetingKeys",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.dynamicTargetingKeys.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserId": {
-                            "description": "Select only dynamic targeting keys whose object has this advertiser ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "names": {
-                            "description": "Select only dynamic targeting keys exactly matching these names.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "objectId": {
-                            "description": "Select only dynamic targeting keys with this object ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "objectType": {
-                            "description": "Select only dynamic targeting keys with this object type.",
-                            "enum": [
-                                "OBJECT_ADVERTISER",
-                                "OBJECT_AD",
-                                "OBJECT_CREATIVE",
-                                "OBJECT_PLACEMENT"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/dynamicTargetingKeys",
-                    "response": {
-                        "$ref": "DynamicTargetingKeysListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "eventTags": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an existing event tag.",
-                    "flatPath": "userprofiles/{profileId}/eventTags/{id}",
-                    "httpMethod": "DELETE",
-                    "id": "dfareporting.eventTags.delete",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Event tag ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/eventTags/{id}",
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "get": {
-                    "description": "Gets one event tag by ID.",
-                    "flatPath": "userprofiles/{profileId}/eventTags/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.eventTags.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Event tag ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/eventTags/{id}",
-                    "response": {
-                        "$ref": "EventTag"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new event tag.",
-                    "flatPath": "userprofiles/{profileId}/eventTags",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.eventTags.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/eventTags",
-                    "request": {
-                        "$ref": "EventTag"
-                    },
-                    "response": {
-                        "$ref": "EventTag"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of event tags, possibly filtered.",
-                    "flatPath": "userprofiles/{profileId}/eventTags",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.eventTags.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "adId": {
-                            "description": "Select only event tags that belong to this ad.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "advertiserId": {
-                            "description": "Select only event tags that belong to this advertiser.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "campaignId": {
-                            "description": "Select only event tags that belong to this campaign.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "definitionsOnly": {
-                            "description": "Examine only the specified campaign or advertiser's event tags for matching selector criteria. When set to false, the parent advertiser and parent campaign of the specified ad or campaign is examined as well. In addition, when set to false, the status field is examined as well, along with the enabledByDefault field. This parameter can not be set to true when adId is specified as ads do not define their own even tags.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "enabled": {
-                            "description": "Select only enabled event tags. What is considered enabled or disabled depends on the definitionsOnly parameter. When definitionsOnly is set to true, only the specified advertiser or campaign's event tags' enabledByDefault field is examined. When definitionsOnly is set to false, the specified ad or specified campaign's parent advertiser's or parent campaign's event tags' enabledByDefault and status fields are examined as well.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "eventTagTypes": {
-                            "description": "Select only event tags with the specified event tag types. Event tag types can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking.",
-                            "enum": [
-                                "IMPRESSION_IMAGE_EVENT_TAG",
-                                "IMPRESSION_JAVASCRIPT_EVENT_TAG",
-                                "CLICK_THROUGH_EVENT_TAG"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only event tags with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"eventtag*2015\" will return objects with names like \"eventtag June 2015\", \"eventtag April 2015\", or simply \"eventtag 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"eventtag\" will match objects with name \"my eventtag\", \"eventtag 2015\", or simply \"eventtag\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/eventTags",
-                    "response": {
-                        "$ref": "EventTagsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing event tag. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/eventTags",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.eventTags.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "EventTag ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/eventTags",
-                    "request": {
-                        "$ref": "EventTag"
-                    },
-                    "response": {
-                        "$ref": "EventTag"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing event tag.",
-                    "flatPath": "userprofiles/{profileId}/eventTags",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.eventTags.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/eventTags",
-                    "request": {
-                        "$ref": "EventTag"
-                    },
-                    "response": {
-                        "$ref": "EventTag"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "files": {
-            "methods": {
-                "get": {
-                    "description": "Retrieves a report file by its report ID and file ID. This method supports media download.",
-                    "flatPath": "reports/{reportId}/files/{fileId}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.files.get",
-                    "parameterOrder": [
-                        "reportId",
-                        "fileId"
-                    ],
-                    "parameters": {
-                        "fileId": {
-                            "description": "The ID of the report file.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "reportId": {
-                            "description": "The ID of the report.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "reports/{reportId}/files/{fileId}",
-                    "response": {
-                        "$ref": "File"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfareporting"
-                    ],
-                    "supportsMediaDownload": true
-                },
-                "list": {
-                    "description": "Lists files for a user profile.",
-                    "flatPath": "userprofiles/{profileId}/files",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.files.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "maxResults": {
-                            "default": "10",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "10",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "The value of the nextToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "The Campaign Manager 360 user profile ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "scope": {
-                            "default": "MINE",
-                            "description": "The scope that defines which results are returned.",
-                            "enum": [
-                                "ALL",
-                                "MINE",
-                                "SHARED_WITH_ME"
-                            ],
-                            "enumDescriptions": [
-                                "All files in account.",
-                                "My files.",
-                                "Files shared with me."
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "LAST_MODIFIED_TIME",
-                            "description": "The field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "LAST_MODIFIED_TIME"
-                            ],
-                            "enumDescriptions": [
-                                "Sort by file ID.",
-                                "Sort by 'lastmodifiedAt' field."
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "DESCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "Ascending order.",
-                                "Descending order."
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/files",
-                    "response": {
-                        "$ref": "FileList"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfareporting"
-                    ]
-                }
-            }
-        },
-        "floodlightActivities": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an existing floodlight activity.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivities/{id}",
-                    "httpMethod": "DELETE",
-                    "id": "dfareporting.floodlightActivities.delete",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Floodlight activity ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivities/{id}",
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "generatetag": {
-                    "description": "Generates a tag for a floodlight activity.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivities/generatetag",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.floodlightActivities.generatetag",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "floodlightActivityId": {
-                            "description": "Floodlight activity ID for which we want to generate a tag.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivities/generatetag",
-                    "response": {
-                        "$ref": "FloodlightActivitiesGenerateTagResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "get": {
-                    "description": "Gets one floodlight activity by ID.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivities/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.floodlightActivities.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Floodlight activity ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivities/{id}",
-                    "response": {
-                        "$ref": "FloodlightActivity"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new floodlight activity.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivities",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.floodlightActivities.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivities",
-                    "request": {
-                        "$ref": "FloodlightActivity"
-                    },
-                    "response": {
-                        "$ref": "FloodlightActivity"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of floodlight activities, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivities",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.floodlightActivities.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserId": {
-                            "description": "Select only floodlight activities for the specified advertiser ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "floodlightActivityGroupIds": {
-                            "description": "Select only floodlight activities with the specified floodlight activity group IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "floodlightActivityGroupName": {
-                            "description": "Select only floodlight activities with the specified floodlight activity group name.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "floodlightActivityGroupTagString": {
-                            "description": "Select only floodlight activities with the specified floodlight activity group tag string.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "floodlightActivityGroupType": {
-                            "description": "Select only floodlight activities with the specified floodlight activity group type.",
-                            "enum": [
-                                "COUNTER",
-                                "SALE"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "floodlightConfigurationId": {
-                            "description": "Select only floodlight activities for the specified floodlight configuration ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only floodlight activities with the specified IDs. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivity*2015\" will return objects with names like \"floodlightactivity June 2015\", \"floodlightactivity April 2015\", or simply \"floodlightactivity 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"floodlightactivity\" will match objects with name \"my floodlightactivity activity\", \"floodlightactivity 2015\", or simply \"floodlightactivity\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "tagString": {
-                            "description": "Select only floodlight activities with the specified tag string.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivities",
-                    "response": {
-                        "$ref": "FloodlightActivitiesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing floodlight activity. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivities",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.floodlightActivities.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "FloodlightActivity ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivities",
-                    "request": {
-                        "$ref": "FloodlightActivity"
-                    },
-                    "response": {
-                        "$ref": "FloodlightActivity"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing floodlight activity.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivities",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.floodlightActivities.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivities",
-                    "request": {
-                        "$ref": "FloodlightActivity"
-                    },
-                    "response": {
-                        "$ref": "FloodlightActivity"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "floodlightActivityGroups": {
-            "methods": {
-                "get": {
-                    "description": "Gets one floodlight activity group by ID.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivityGroups/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.floodlightActivityGroups.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Floodlight activity Group ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivityGroups/{id}",
-                    "response": {
-                        "$ref": "FloodlightActivityGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "insert": {
-                    "description": "Inserts a new floodlight activity group.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "httpMethod": "POST",
-                    "id": "dfareporting.floodlightActivityGroups.insert",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "request": {
-                        "$ref": "FloodlightActivityGroup"
-                    },
-                    "response": {
-                        "$ref": "FloodlightActivityGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.floodlightActivityGroups.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "advertiserId": {
-                            "description": "Select only floodlight activity groups with the specified advertiser ID. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "floodlightConfigurationId": {
-                            "description": "Select only floodlight activity groups with the specified floodlight configuration ID. Must specify either advertiserId, or floodlightConfigurationId for a non-empty result.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only floodlight activity groups with the specified IDs. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivitygroup*2015\" will return objects with names like \"floodlightactivitygroup June 2015\", \"floodlightactivitygroup April 2015\", or simply \"floodlightactivitygroup 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"floodlightactivitygroup\" will match objects with name \"my floodlightactivitygroup activity\", \"floodlightactivitygroup 2015\", or simply \"floodlightactivitygroup\".",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "type": {
-                            "description": "Select only floodlight activity groups with the specified floodlight activity group type.",
-                            "enum": [
-                                "COUNTER",
-                                "SALE"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "response": {
-                        "$ref": "FloodlightActivityGroupsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing floodlight activity group. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.floodlightActivityGroups.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "FloodlightActivityGroup ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "request": {
-                        "$ref": "FloodlightActivityGroup"
-                    },
-                    "response": {
-                        "$ref": "FloodlightActivityGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing floodlight activity group.",
-                    "flatPath": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.floodlightActivityGroups.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightActivityGroups",
-                    "request": {
-                        "$ref": "FloodlightActivityGroup"
-                    },
-                    "response": {
-                        "$ref": "FloodlightActivityGroup"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "floodlightConfigurations": {
-            "methods": {
-                "get": {
-                    "description": "Gets one floodlight configuration by ID.",
-                    "flatPath": "userprofiles/{profileId}/floodlightConfigurations/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.floodlightConfigurations.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Floodlight configuration ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightConfigurations/{id}",
-                    "response": {
-                        "$ref": "FloodlightConfiguration"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of floodlight configurations, possibly filtered.",
-                    "flatPath": "userprofiles/{profileId}/floodlightConfigurations",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.floodlightConfigurations.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "ids": {
-                            "description": "Set of IDs of floodlight configurations to retrieve. Required field; otherwise an empty list will be returned.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightConfigurations",
-                    "response": {
-                        "$ref": "FloodlightConfigurationsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates an existing floodlight configuration. This method supports patch semantics.",
-                    "flatPath": "userprofiles/{profileId}/floodlightConfigurations",
-                    "httpMethod": "PATCH",
-                    "id": "dfareporting.floodlightConfigurations.patch",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "FloodlightConfiguration ID.",
-                            "format": "int64",
-                            "location": "query",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightConfigurations",
-                    "request": {
-                        "$ref": "FloodlightConfiguration"
-                    },
-                    "response": {
-                        "$ref": "FloodlightConfiguration"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an existing floodlight configuration.",
-                    "flatPath": "userprofiles/{profileId}/floodlightConfigurations",
-                    "httpMethod": "PUT",
-                    "id": "dfareporting.floodlightConfigurations.update",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/floodlightConfigurations",
-                    "request": {
-                        "$ref": "FloodlightConfiguration"
-                    },
-                    "response": {
-                        "$ref": "FloodlightConfiguration"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "inventoryItems": {
-            "methods": {
-                "get": {
-                    "description": "Gets one inventory item by ID.",
-                    "flatPath": "userprofiles/{profileId}/projects/{projectId}/inventoryItems/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.inventoryItems.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "projectId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Inventory item ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "projectId": {
-                            "description": "Project ID for order documents.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/projects/{projectId}/inventoryItems/{id}",
-                    "response": {
-                        "$ref": "InventoryItem"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of inventory items, possibly filtered. This method supports paging.",
-                    "flatPath": "userprofiles/{profileId}/projects/{projectId}/inventoryItems",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.inventoryItems.list",
-                    "parameterOrder": [
-                        "profileId",
-                        "projectId"
-                    ],
-                    "parameters": {
-                        "ids": {
-                            "description": "Select only inventory items with these IDs.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "inPlan": {
-                            "description": "Select only inventory items that are in plan.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "orderId": {
-                            "description": "Select only inventory items that belong to specified orders.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "projectId": {
-                            "description": "Project ID for order documents.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "siteId": {
-                            "description": "Select only inventory items that are associated with these sites.",
-                            "format": "int64",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "sortField": {
-                            "default": "ID",
-                            "description": "Field by which to sort the list.",
-                            "enum": [
-                                "ID",
-                                "NAME"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "sortOrder": {
-                            "default": "ASCENDING",
-                            "description": "Order of sorted results.",
-                            "enum": [
-                                "ASCENDING",
-                                "DESCENDING"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "type": {
-                            "description": "Select only inventory items with this type.",
-                            "enum": [
-                                "PLANNING_PLACEMENT_TYPE_REGULAR",
-                                "PLANNING_PLACEMENT_TYPE_CREDIT"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/projects/{projectId}/inventoryItems",
-                    "response": {
-                        "$ref": "InventoryItemsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "languages": {
-            "methods": {
-                "list": {
-                    "description": "Retrieves a list of languages.",
-                    "flatPath": "userprofiles/{profileId}/languages",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.languages.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/languages",
-                    "response": {
-                        "$ref": "LanguagesListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "metros": {
-            "methods": {
-                "list": {
-                    "description": "Retrieves a list of metros.",
-                    "flatPath": "userprofiles/{profileId}/metros",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.metros.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/metros",
-                    "response": {
-                        "$ref": "MetrosListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "mobileApps": {
-            "methods": {
-                "get": {
-                    "description": "Gets one mobile app by ID.",
-                    "flatPath": "userprofiles/{profileId}/mobileApps/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.mobileApps.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Mobile app ID.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/mobileApps/{id}",
-                    "response": {
-                        "$ref": "MobileApp"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves list of available mobile apps.",
-                    "flatPath": "userprofiles/{profileId}/mobileApps",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.mobileApps.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "directories": {
-                            "description": "Select only apps from these directories.",
-                            "enum": [
-                                "UNKNOWN",
-                                "APPLE_APP_STORE",
-                                "GOOGLE_PLAY_STORE",
-                                "ROKU_APP_STORE",
-                                "AMAZON_FIRETV_APP_STORE",
-                                "PLAYSTATION_APP_STORE",
-                                "APPLE_TV_APP_STORE",
-                                "XBOX_APP_STORE",
-                                "SAMSUNG_TV_APP_STORE",
-                                "ANDROID_TV_APP_STORE",
-                                "GENERIC_CTV_APP_STORE"
-                            ],
-                            "enumDescriptions": [
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                "",
-                                ""
-                            ],
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "ids": {
-                            "description": "Select only apps with these IDs.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "maxResults": {
-                            "default": "1000",
-                            "description": "Maximum number of results to return.",
-                            "format": "int32",
-                            "location": "query",
-                            "maximum": "1000",
-                            "minimum": "0",
-                            "type": "integer"
-                        },
-                        "pageToken": {
-                            "description": "Value of the nextPageToken from the previous result page.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "searchString": {
-                            "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"app*2015\" will return objects with names like \"app Jan 2018\", \"app Jan 2018\", or simply \"app 2018\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"app\" will match objects with name \"my app\", \"app 2018\", or simply \"app\".",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/mobileApps",
-                    "response": {
-                        "$ref": "MobileAppsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "mobileCarriers": {
-            "methods": {
-                "get": {
-                    "description": "Gets one mobile carrier by ID.",
-                    "flatPath": "userprofiles/{profileId}/mobileCarriers/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.mobileCarriers.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Mobile carrier ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/mobileCarriers/{id}",
-                    "response": {
-                        "$ref": "MobileCarrier"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of mobile carriers.",
-                    "flatPath": "userprofiles/{profileId}/mobileCarriers",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.mobileCarriers.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/mobileCarriers",
-                    "response": {
-                        "$ref": "MobileCarriersListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "operatingSystemVersions": {
-            "methods": {
-                "get": {
-                    "description": "Gets one operating system version by ID.",
-                    "flatPath": "userprofiles/{profileId}/operatingSystemVersions/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.operatingSystemVersions.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Operating system version ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/operatingSystemVersions/{id}",
-                    "response": {
-                        "$ref": "OperatingSystemVersion"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of operating system versions.",
-                    "flatPath": "userprofiles/{profileId}/operatingSystemVersions",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.operatingSystemVersions.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/operatingSystemVersions",
-                    "response": {
-                        "$ref": "OperatingSystemVersionsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "operatingSystems": {
-            "methods": {
-                "get": {
-                    "description": "Gets one operating system by DART ID.",
-                    "flatPath": "userprofiles/{profileId}/operatingSystems/{dartId}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.operatingSystems.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "dartId"
-                    ],
-                    "parameters": {
-                        "dartId": {
-                            "description": "Operating system DART ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/operatingSystems/{dartId}",
-                    "response": {
-                        "$ref": "OperatingSystem"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list": {
-                    "description": "Retrieves a list of operating systems.",
-                    "flatPath": "userprofiles/{profileId}/operatingSystems",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.operatingSystems.list",
-                    "parameterOrder": [
-                        "profileId"
-                    ],
-                    "parameters": {
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/operatingSystems",
-                    "response": {
-                        "$ref": "OperatingSystemsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                }
-            }
-        },
-        "orderDocuments": {
-            "methods": {
-                "get": {
-                    "description": "Gets one order document by ID.",
-                    "flatPath": "userprofiles/{profileId}/projects/{projectId}/orderDocuments/{id}",
-                    "httpMethod": "GET",
-                    "id": "dfareporting.orderDocuments.get",
-                    "parameterOrder": [
-                        "profileId",
-                        "projectId",
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Order document ID.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "profileId": {
-                            "description": "User profile ID associated with this request.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "projectId": {
-                            "description": "Project ID for order documents.",
-                            "format": "int64",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "userprofiles/{profileId}/projects/{projectId}/orderDocuments/{id}",
-                    "response": {
-                        "$ref": "OrderDocument"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/dfatrafficking"
-                    ]
-                },
-                "list"